@itcase/forms 1.0.36 → 1.0.37

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.
@@ -1,2879 +1 @@
1
- 'use strict';
2
-
3
- var libphonenumberJs = require('libphonenumber-js');
4
- var React = require('react');
5
- var finalForm = require('final-form');
6
- var reactFinalForm = require('react-final-form');
7
- var PropTypes = require('prop-types');
8
- var clsx = require('clsx');
9
- var Checkbox = require('@itcase/ui/components/Checkbox');
10
- var Divider = require('@itcase/ui/components/Divider');
11
- var Text = require('@itcase/ui/components/Text');
12
- var useDeviceTargetClass = require('@itcase/ui/hooks/useDeviceTargetClass');
13
- var useStyles = require('@itcase/ui/hooks/useStyles');
14
- var Choice = require('@itcase/ui/components/Choice');
15
- var Code = require('@itcase/ui/components/Code');
16
- var DatePicker = require('@itcase/ui/components/DatePicker');
17
- var axios = require('axios');
18
- var reactDropzone = require('react-dropzone');
19
- var fileSelector = require('file-selector');
20
- var castArray = require('lodash/castArray');
21
- var common = require('@itcase/common');
22
- var Loader = require('@itcase/ui/components/Loader');
23
- var Title = require('@itcase/ui/components/Title');
24
- var Input = require('@itcase/ui/components/Input');
25
- var Icon = require('@itcase/ui/components/Icon');
26
- var RadioButton = require('@itcase/ui/components/RadioButton');
27
- var Segmented = require('@itcase/ui/components/Segmented');
28
- var Select = require('@itcase/ui/components/Select');
29
- var Switch = require('@itcase/ui/components/Switch');
30
- var Textarea = require('@itcase/ui/components/Textarea');
31
- var Button = require('@itcase/ui/components/Button');
32
- var Group$1 = require('@itcase/ui/components/Group');
33
- var Notification = require('@itcase/ui/components/Notification');
34
- var createDecorator = require('final-form-focus');
35
-
36
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
37
-
38
- var React__default = /*#__PURE__*/_interopDefault(React);
39
- var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
40
- var clsx__default = /*#__PURE__*/_interopDefault(clsx);
41
- var axios__default = /*#__PURE__*/_interopDefault(axios);
42
- var castArray__default = /*#__PURE__*/_interopDefault(castArray);
43
- var createDecorator__default = /*#__PURE__*/_interopDefault(createDecorator);
44
-
45
- var phoneValidation = function phoneValidation(value, context) {
46
- if (!value) {
47
- return true;
48
- }
49
- return libphonenumberJs.isPossiblePhoneNumber(value, 'RU');
50
- };
51
- var emailValidation = function emailValidation(value, context) {
52
- // from https://emailregex.com/
53
- if (!value) {
54
- return true;
55
- }
56
- // eslint-disable-next-line
57
- var regexp = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;
58
- return regexp.test(String(value).toLowerCase());
59
- };
60
- var addRequiredFieldsParamToSchema = function addRequiredFieldsParamToSchema(schema) {
61
- var fields = Object.entries(schema.fields);
62
- schema.requiredFields = fields.reduce(function (list, _ref) {
63
- var _validationProps$excl;
64
- var fieldName = _ref[0],
65
- validationProps = _ref[1];
66
- if ((_validationProps$excl = validationProps.exclusiveTests) != null && _validationProps$excl.required) {
67
- list.push(fieldName);
68
- }
69
- return list;
70
- }, []);
71
- return schema;
72
- };
73
-
74
- function _asyncIterator(r) {
75
- var n,
76
- t,
77
- o,
78
- e = 2;
79
- for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
80
- if (t && null != (n = r[t])) return n.call(r);
81
- if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
82
- t = "@@asyncIterator", o = "@@iterator";
83
- }
84
- throw new TypeError("Object is not async iterable");
85
- }
86
- function AsyncFromSyncIterator(r) {
87
- function AsyncFromSyncIteratorContinuation(r) {
88
- if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
89
- var n = r.done;
90
- return Promise.resolve(r.value).then(function (r) {
91
- return {
92
- value: r,
93
- done: n
94
- };
95
- });
96
- }
97
- return AsyncFromSyncIterator = function (r) {
98
- this.s = r, this.n = r.next;
99
- }, AsyncFromSyncIterator.prototype = {
100
- s: null,
101
- n: null,
102
- next: function () {
103
- return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
104
- },
105
- return: function (r) {
106
- var n = this.s.return;
107
- return void 0 === n ? Promise.resolve({
108
- value: r,
109
- done: !0
110
- }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
111
- },
112
- throw: function (r) {
113
- var n = this.s.return;
114
- return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
115
- }
116
- }, new AsyncFromSyncIterator(r);
117
- }
118
- function _regeneratorRuntime() {
119
- _regeneratorRuntime = function () {
120
- return e;
121
- };
122
- var t,
123
- e = {},
124
- r = Object.prototype,
125
- n = r.hasOwnProperty,
126
- o = Object.defineProperty || function (t, e, r) {
127
- t[e] = r.value;
128
- },
129
- i = "function" == typeof Symbol ? Symbol : {},
130
- a = i.iterator || "@@iterator",
131
- c = i.asyncIterator || "@@asyncIterator",
132
- u = i.toStringTag || "@@toStringTag";
133
- function define(t, e, r) {
134
- return Object.defineProperty(t, e, {
135
- value: r,
136
- enumerable: !0,
137
- configurable: !0,
138
- writable: !0
139
- }), t[e];
140
- }
141
- try {
142
- define({}, "");
143
- } catch (t) {
144
- define = function (t, e, r) {
145
- return t[e] = r;
146
- };
147
- }
148
- function wrap(t, e, r, n) {
149
- var i = e && e.prototype instanceof Generator ? e : Generator,
150
- a = Object.create(i.prototype),
151
- c = new Context(n || []);
152
- return o(a, "_invoke", {
153
- value: makeInvokeMethod(t, r, c)
154
- }), a;
155
- }
156
- function tryCatch(t, e, r) {
157
- try {
158
- return {
159
- type: "normal",
160
- arg: t.call(e, r)
161
- };
162
- } catch (t) {
163
- return {
164
- type: "throw",
165
- arg: t
166
- };
167
- }
168
- }
169
- e.wrap = wrap;
170
- var h = "suspendedStart",
171
- l = "suspendedYield",
172
- f = "executing",
173
- s = "completed",
174
- y = {};
175
- function Generator() {}
176
- function GeneratorFunction() {}
177
- function GeneratorFunctionPrototype() {}
178
- var p = {};
179
- define(p, a, function () {
180
- return this;
181
- });
182
- var d = Object.getPrototypeOf,
183
- v = d && d(d(values([])));
184
- v && v !== r && n.call(v, a) && (p = v);
185
- var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
186
- function defineIteratorMethods(t) {
187
- ["next", "throw", "return"].forEach(function (e) {
188
- define(t, e, function (t) {
189
- return this._invoke(e, t);
190
- });
191
- });
192
- }
193
- function AsyncIterator(t, e) {
194
- function invoke(r, o, i, a) {
195
- var c = tryCatch(t[r], t, o);
196
- if ("throw" !== c.type) {
197
- var u = c.arg,
198
- h = u.value;
199
- return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
200
- invoke("next", t, i, a);
201
- }, function (t) {
202
- invoke("throw", t, i, a);
203
- }) : e.resolve(h).then(function (t) {
204
- u.value = t, i(u);
205
- }, function (t) {
206
- return invoke("throw", t, i, a);
207
- });
208
- }
209
- a(c.arg);
210
- }
211
- var r;
212
- o(this, "_invoke", {
213
- value: function (t, n) {
214
- function callInvokeWithMethodAndArg() {
215
- return new e(function (e, r) {
216
- invoke(t, n, e, r);
217
- });
218
- }
219
- return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
220
- }
221
- });
222
- }
223
- function makeInvokeMethod(e, r, n) {
224
- var o = h;
225
- return function (i, a) {
226
- if (o === f) throw new Error("Generator is already running");
227
- if (o === s) {
228
- if ("throw" === i) throw a;
229
- return {
230
- value: t,
231
- done: !0
232
- };
233
- }
234
- for (n.method = i, n.arg = a;;) {
235
- var c = n.delegate;
236
- if (c) {
237
- var u = maybeInvokeDelegate(c, n);
238
- if (u) {
239
- if (u === y) continue;
240
- return u;
241
- }
242
- }
243
- if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
244
- if (o === h) throw o = s, n.arg;
245
- n.dispatchException(n.arg);
246
- } else "return" === n.method && n.abrupt("return", n.arg);
247
- o = f;
248
- var p = tryCatch(e, r, n);
249
- if ("normal" === p.type) {
250
- if (o = n.done ? s : l, p.arg === y) continue;
251
- return {
252
- value: p.arg,
253
- done: n.done
254
- };
255
- }
256
- "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
257
- }
258
- };
259
- }
260
- function maybeInvokeDelegate(e, r) {
261
- var n = r.method,
262
- o = e.iterator[n];
263
- if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
264
- var i = tryCatch(o, e.iterator, r.arg);
265
- if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
266
- var a = i.arg;
267
- return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
268
- }
269
- function pushTryEntry(t) {
270
- var e = {
271
- tryLoc: t[0]
272
- };
273
- 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
274
- }
275
- function resetTryEntry(t) {
276
- var e = t.completion || {};
277
- e.type = "normal", delete e.arg, t.completion = e;
278
- }
279
- function Context(t) {
280
- this.tryEntries = [{
281
- tryLoc: "root"
282
- }], t.forEach(pushTryEntry, this), this.reset(!0);
283
- }
284
- function values(e) {
285
- if (e || "" === e) {
286
- var r = e[a];
287
- if (r) return r.call(e);
288
- if ("function" == typeof e.next) return e;
289
- if (!isNaN(e.length)) {
290
- var o = -1,
291
- i = function next() {
292
- for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
293
- return next.value = t, next.done = !0, next;
294
- };
295
- return i.next = i;
296
- }
297
- }
298
- throw new TypeError(typeof e + " is not iterable");
299
- }
300
- return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
301
- value: GeneratorFunctionPrototype,
302
- configurable: !0
303
- }), o(GeneratorFunctionPrototype, "constructor", {
304
- value: GeneratorFunction,
305
- configurable: !0
306
- }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
307
- var e = "function" == typeof t && t.constructor;
308
- return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
309
- }, e.mark = function (t) {
310
- return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
311
- }, e.awrap = function (t) {
312
- return {
313
- __await: t
314
- };
315
- }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
316
- return this;
317
- }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
318
- void 0 === i && (i = Promise);
319
- var a = new AsyncIterator(wrap(t, r, n, o), i);
320
- return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
321
- return t.done ? t.value : a.next();
322
- });
323
- }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
324
- return this;
325
- }), define(g, "toString", function () {
326
- return "[object Generator]";
327
- }), e.keys = function (t) {
328
- var e = Object(t),
329
- r = [];
330
- for (var n in e) r.push(n);
331
- return r.reverse(), function next() {
332
- for (; r.length;) {
333
- var t = r.pop();
334
- if (t in e) return next.value = t, next.done = !1, next;
335
- }
336
- return next.done = !0, next;
337
- };
338
- }, e.values = values, Context.prototype = {
339
- constructor: Context,
340
- reset: function (e) {
341
- if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
342
- },
343
- stop: function () {
344
- this.done = !0;
345
- var t = this.tryEntries[0].completion;
346
- if ("throw" === t.type) throw t.arg;
347
- return this.rval;
348
- },
349
- dispatchException: function (e) {
350
- if (this.done) throw e;
351
- var r = this;
352
- function handle(n, o) {
353
- return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
354
- }
355
- for (var o = this.tryEntries.length - 1; o >= 0; --o) {
356
- var i = this.tryEntries[o],
357
- a = i.completion;
358
- if ("root" === i.tryLoc) return handle("end");
359
- if (i.tryLoc <= this.prev) {
360
- var c = n.call(i, "catchLoc"),
361
- u = n.call(i, "finallyLoc");
362
- if (c && u) {
363
- if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
364
- if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
365
- } else if (c) {
366
- if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
367
- } else {
368
- if (!u) throw new Error("try statement without catch or finally");
369
- if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
370
- }
371
- }
372
- }
373
- },
374
- abrupt: function (t, e) {
375
- for (var r = this.tryEntries.length - 1; r >= 0; --r) {
376
- var o = this.tryEntries[r];
377
- if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
378
- var i = o;
379
- break;
380
- }
381
- }
382
- i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
383
- var a = i ? i.completion : {};
384
- return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
385
- },
386
- complete: function (t, e) {
387
- if ("throw" === t.type) throw t.arg;
388
- return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
389
- },
390
- finish: function (t) {
391
- for (var e = this.tryEntries.length - 1; e >= 0; --e) {
392
- var r = this.tryEntries[e];
393
- if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
394
- }
395
- },
396
- catch: function (t) {
397
- for (var e = this.tryEntries.length - 1; e >= 0; --e) {
398
- var r = this.tryEntries[e];
399
- if (r.tryLoc === t) {
400
- var n = r.completion;
401
- if ("throw" === n.type) {
402
- var o = n.arg;
403
- resetTryEntry(r);
404
- }
405
- return o;
406
- }
407
- }
408
- throw new Error("illegal catch attempt");
409
- },
410
- delegateYield: function (e, r, n) {
411
- return this.delegate = {
412
- iterator: values(e),
413
- resultName: r,
414
- nextLoc: n
415
- }, "next" === this.method && (this.arg = t), y;
416
- }
417
- }, e;
418
- }
419
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
420
- try {
421
- var info = gen[key](arg);
422
- var value = info.value;
423
- } catch (error) {
424
- reject(error);
425
- return;
426
- }
427
- if (info.done) {
428
- resolve(value);
429
- } else {
430
- Promise.resolve(value).then(_next, _throw);
431
- }
432
- }
433
- function _asyncToGenerator(fn) {
434
- return function () {
435
- var self = this,
436
- args = arguments;
437
- return new Promise(function (resolve, reject) {
438
- var gen = fn.apply(self, args);
439
- function _next(value) {
440
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
441
- }
442
- function _throw(err) {
443
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
444
- }
445
- _next(undefined);
446
- });
447
- };
448
- }
449
-
450
- /**
451
- * Sets the `innerError.message` in an `errors` object at the key
452
- * defined by `innerError.path`.
453
- * @param {Object} errors The object to set the error in.
454
- * @param {{ path: string, message: string }} innerError A `yup` field error.
455
- * @returns {Object} The result of setting the new error message onto `errors`.
456
- */
457
- var setInError = function setInError(errors, innerError) {
458
- return finalForm.setIn(errors, innerError.path, innerError.message);
459
- };
460
-
461
- /**
462
- * Empty object map with no prototype. Used as default
463
- * value for reducing the `err.inner` array of errors
464
- * from a `yup~ValidationError`.
465
- */
466
- var emptyObj = Object.create(null);
467
-
468
- /**
469
- * Takes a `yup` validation schema and returns a function that expects
470
- * a map of values to validate. If the validation passes, the function resolves to `undefined`
471
- * (signalling that the values are valid). If the validation doesn't pass, it resolves
472
- * to a map of invalid field names to errors.
473
- * @param {import('yup').ObjectSchema} schema `yup` schema definition.
474
- * @returns {(values: Object) => Promise<?Object>} An async function that expects some `values`
475
- * and resolves to either `undefined` or a map of field names to error messages.
476
- */
477
-
478
- var makeValidate = function makeValidate(schema) {
479
- return /*#__PURE__*/function () {
480
- var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(values) {
481
- return _regeneratorRuntime().wrap(function _callee$(_context) {
482
- while (1) switch (_context.prev = _context.next) {
483
- case 0:
484
- _context.prev = 0;
485
- _context.next = 3;
486
- return schema.validate(values, {
487
- abortEarly: false
488
- });
489
- case 3:
490
- _context.next = 12;
491
- break;
492
- case 5:
493
- _context.prev = 5;
494
- _context.t0 = _context["catch"](0);
495
- if (!_context.t0.inner) {
496
- _context.next = 11;
497
- break;
498
- }
499
- return _context.abrupt("return", _context.t0.inner.reduce(setInError, emptyObj));
500
- case 11:
501
- console.warn('itcase-forms schema.validate error: An error not related to the form occurred during validation. Validation ignored.');
502
- case 12:
503
- case "end":
504
- return _context.stop();
505
- }
506
- }, _callee, null, [[0, 5]]);
507
- }));
508
- function validate(_x) {
509
- return _validate.apply(this, arguments);
510
- }
511
- return validate;
512
- }();
513
- };
514
- function useYupValidationSchema(schema, language) {
515
- var validate = React.useMemo(function () {
516
- return schema && makeValidate(schema);
517
- }, [schema, language]);
518
- return validate;
519
- }
520
-
521
- function FieldWrapperBase(props) {
522
- var after = props.after,
523
- afterItem = props.afterItem,
524
- before = props.before,
525
- beforeItem = props.beforeItem,
526
- children = props.children,
527
- className = props.className,
528
- desc = props.desc,
529
- descTextSize = props.descTextSize,
530
- descTextColor = props.descTextColor,
531
- descTextWidth = props.descTextWidth,
532
- divider = props.divider,
533
- dividerDirection = props.dividerDirection,
534
- dividerFill = props.dividerFill,
535
- dividerSize = props.dividerSize,
536
- dividerWidth = props.dividerWidth,
537
- fieldClassName = props.fieldClassName,
538
- id = props.id,
539
- inputName = props.inputName,
540
- inputValue = props.inputValue,
541
- isRequired = props.isRequired,
542
- label = props.label,
543
- labelTextSize = props.labelTextSize,
544
- labelTextColor = props.labelTextColor,
545
- labelTextWidth = props.labelTextWidth,
546
- errorMessageTextSize = props.errorMessageTextSize,
547
- errorMessageTextWeight = props.errorMessageTextWeight,
548
- errorMessageTextColor = props.errorMessageTextColor,
549
- message = props.message,
550
- messageTextSize = props.messageTextSize,
551
- messageTextColor = props.messageTextColor,
552
- messageTextWeight = props.messageTextWeight,
553
- metaActive = props.metaActive,
554
- metaError = props.metaError,
555
- metaModifiedSinceLastSubmit = props.metaModifiedSinceLastSubmit,
556
- metaSubmitError = props.metaSubmitError,
557
- metaSubmitFailed = props.metaSubmitFailed,
558
- metaTouched = props.metaTouched,
559
- metaValid = props.metaValid,
560
- set = props.set,
561
- type = props.type,
562
- hideMessage = props.hideMessage,
563
- isHidden = props.isHidden,
564
- Tag = props.tag,
565
- dataTour = props.dataTour,
566
- showErrorsOnSubmit = props.showErrorsOnSubmit;
567
- var error = metaError || !metaModifiedSinceLastSubmit && metaSubmitError || false;
568
- var showError = React.useMemo(function () {
569
- if (showErrorsOnSubmit) {
570
- return metaSubmitFailed && metaTouched && error;
571
- } else {
572
- return metaTouched && error;
573
- }
574
- }, [showErrorsOnSubmit, metaSubmitFailed, metaTouched, error]);
575
- var showValid = React.useMemo(function () {
576
- var hasValue = Array.isArray(inputValue) ? inputValue.length : inputValue;
577
- var isModifiedAfterSubmit = !metaError && metaSubmitError && metaModifiedSinceLastSubmit;
578
- return hasValue && (metaValid || isModifiedAfterSubmit);
579
- }, [inputValue, metaValid, metaError, metaSubmitError, metaModifiedSinceLastSubmit]);
580
- var formFieldClass = React.useMemo(function () {
581
- return clsx__default.default(className, showError && 'form__item_state_error', showValid && 'form__item_state_success', isRequired && 'form__item_state_required', metaActive && 'form__item_state_focus', inputValue && 'form__item_state_filled');
582
- }, [className, showError, showValid, isRequired, metaActive, inputValue]);
583
- var fieldClass = React.useMemo(function () {
584
- return clsx__default.default(fieldClassName, showError && fieldClassName + "_state_error", showValid && fieldClassName + "_state_success", metaActive && fieldClassName + "_state_focus", inputValue && fieldClassName + "_state_filled");
585
- }, [fieldClassName, showError, showValid, metaActive, inputValue]);
586
- var sizeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
587
- prefix: 'form-field_size_',
588
- propsKey: 'size'
589
- });
590
- var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
591
- prefix: 'fill_',
592
- propsKey: 'fill'
593
- });
594
- var inputFillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
595
- prefix: 'fill_',
596
- propsKey: 'inputFill'
597
- });
598
- var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
599
- prefix: 'form-field_shape_',
600
- propsKey: 'shape'
601
- });
602
- var inputShapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
603
- prefix: 'form-field__item-value_shape_',
604
- propsKey: 'inputShape'
605
- });
606
- var directionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
607
- prefix: 'direction_',
608
- propsKey: 'direction'
609
- });
610
- var widthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
611
- prefix: 'width_',
612
- propsKey: 'width'
613
- });
614
- var _useStyles = useStyles.useStyles(props),
615
- formFieldStyles = _useStyles.styles;
616
- return /*#__PURE__*/React__default.default.createElement(Tag, {
617
- className: clsx__default.default(formFieldClass, 'form__item', 'form-field', type && "form-field_type_" + type, set && "form-field_set_" + set, sizeClass, fillClass, shapeClass, isHidden && "form-field_state_hidden", directionClass, widthClass),
618
- "data-tour": dataTour,
619
- style: formFieldStyles
620
- }, before, label && /*#__PURE__*/React__default.default.createElement("div", {
621
- htmlFor: id,
622
- className: "form-field__label"
623
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
624
- size: labelTextSize,
625
- textWeight: labelTextWidth,
626
- textColor: labelTextColor
627
- }, label)), desc && /*#__PURE__*/React__default.default.createElement("div", {
628
- className: "form-field__desc"
629
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
630
- size: descTextSize,
631
- textWeight: descTextWidth,
632
- textColor: descTextColor
633
- }, desc)), /*#__PURE__*/React__default.default.createElement("div", {
634
- className: clsx__default.default('form-field__content', inputFillClass, inputShapeClass)
635
- }, /*#__PURE__*/React__default.default.createElement("div", {
636
- className: clsx__default.default('form-field__content-inner', fieldClass)
637
- }, beforeItem, children, afterItem), divider && /*#__PURE__*/React__default.default.createElement(Divider.Divider, {
638
- className: "form-field__item-divider",
639
- width: dividerWidth,
640
- direction: dividerDirection,
641
- size: dividerSize,
642
- fill: dividerFill
643
- })), !hideMessage && /*#__PURE__*/React__default.default.createElement("div", {
644
- className: "form-field__message"
645
- }, Boolean(showError) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
646
- className: "form-field__message-item form-field__message-item_type-error",
647
- size: errorMessageTextSize,
648
- textWeight: errorMessageTextWeight,
649
- textColor: errorMessageTextColor,
650
- id: inputName + "-error"
651
- }, error), Boolean(message) && !showError && /*#__PURE__*/React__default.default.createElement(Text.Text, {
652
- className: "form-field__message-item form-field__message-item_type_message",
653
- size: messageTextSize,
654
- textWeight: messageTextWeight,
655
- textColor: messageTextColor
656
- }, message), Boolean(!showError) && Boolean(!message) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
657
- className: "form-field__message-item form-field__message-item_type_message",
658
- size: messageTextSize
659
- }, "\xA0")), after);
660
- }
661
- FieldWrapperBase.defaultProps = {
662
- tag: 'div',
663
- type: 'normal',
664
- errorMessageTextSize: 's',
665
- errorMessageTextColor: 'errorTextSecondary'
666
- };
667
- FieldWrapperBase.propTypes = {
668
- after: PropTypes__default.default.any,
669
- afterItem: PropTypes__default.default.any,
670
- autoComplete: PropTypes__default.default.string,
671
- before: PropTypes__default.default.any,
672
- beforeItem: PropTypes__default.default.any,
673
- children: PropTypes__default.default.any,
674
- className: PropTypes__default.default.string,
675
- desc: PropTypes__default.default.string,
676
- descTextSize: PropTypes__default.default.string,
677
- descTextColor: PropTypes__default.default.string,
678
- descTextWidth: PropTypes__default.default.string,
679
- dividerDirection: PropTypes__default.default.string,
680
- dividerFill: PropTypes__default.default.string,
681
- dividerSize: PropTypes__default.default.string,
682
- dividerWidth: PropTypes__default.default.string,
683
- fieldClassName: PropTypes__default.default.string,
684
- id: PropTypes__default.default.string,
685
- inputName: PropTypes__default.default.string,
686
- inputOnBlur: PropTypes__default.default.func,
687
- inputOnChange: PropTypes__default.default.func,
688
- inputOnFocus: PropTypes__default.default.func,
689
- inputValue: PropTypes__default.default.any,
690
- isRequired: PropTypes__default.default.bool,
691
- itemType: PropTypes__default.default.string,
692
- label: PropTypes__default.default.any,
693
- labelTextSize: PropTypes__default.default.string,
694
- labelTextColor: PropTypes__default.default.string,
695
- labelTextWidth: PropTypes__default.default.string,
696
- errorMessageTextSize: PropTypes__default.default.string,
697
- errorMessageTextWidth: PropTypes__default.default.string,
698
- errorMessageTextColor: PropTypes__default.default.string,
699
- message: PropTypes__default.default.string,
700
- messageSize: PropTypes__default.default.string,
701
- messageTextColor: PropTypes__default.default.string,
702
- messageTextWidth: PropTypes__default.default.string,
703
- metaActive: PropTypes__default.default.bool,
704
- metaError: PropTypes__default.default.string,
705
- metaModifiedSinceLastSubmit: PropTypes__default.default.bool,
706
- metaSubmitError: PropTypes__default.default.string,
707
- metaSubmitFailed: PropTypes__default.default.bool,
708
- metaTouched: PropTypes__default.default.bool,
709
- metaValid: PropTypes__default.default.bool,
710
- set: PropTypes__default.default.string,
711
- showErrorsOnSubmit: PropTypes__default.default.bool,
712
- type: PropTypes__default.default.string
713
- };
714
- function FieldWrapper(props) {
715
- var inputName = props.inputName;
716
- var _useForm = reactFinalForm.useForm(),
717
- change = _useForm.change; // , mutators
718
-
719
- React.useEffect(function () {
720
- return function () {
721
- change(inputName, undefined);
722
- };
723
- }, []);
724
- return /*#__PURE__*/React__default.default.createElement(FieldWrapperBase, props);
725
- }
726
- FieldWrapper.propTypes = {
727
- autoComplete: PropTypes__default.default.string,
728
- children: PropTypes__default.default.any,
729
- className: PropTypes__default.default.string,
730
- fieldClassName: PropTypes__default.default.string,
731
- hint: PropTypes__default.default.string,
732
- inputName: PropTypes__default.default.string,
733
- inputOnBlur: PropTypes__default.default.func,
734
- inputOnChange: PropTypes__default.default.func,
735
- inputOnFocus: PropTypes__default.default.func,
736
- inputValue: PropTypes__default.default.any,
737
- isRequired: PropTypes__default.default.bool,
738
- itemType: PropTypes__default.default.string,
739
- label: PropTypes__default.default.any,
740
- metaActive: PropTypes__default.default.bool,
741
- metaError: PropTypes__default.default.string,
742
- metaModifiedSinceLastSubmit: PropTypes__default.default.bool,
743
- metaSubmitError: PropTypes__default.default.string,
744
- metaSubmitFailed: PropTypes__default.default.bool,
745
- metaTouched: PropTypes__default.default.bool,
746
- metaValid: PropTypes__default.default.bool,
747
- showErrorsOnSubmit: PropTypes__default.default.bool
748
- };
749
-
750
- var CheckboxField = /*#__PURE__*/React__default.default.memo(function CheckboxField(props) {
751
- var name = props.name,
752
- isRequired = props.isRequired,
753
- onChange = props.onChange,
754
- fieldProps = props.fieldProps,
755
- inputProps = props.inputProps,
756
- classNameGroupItem = props.classNameGroupItem,
757
- hideMessage = props.hideMessage;
758
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
759
- name: name,
760
- type: "checkbox"
761
- }, function (_ref) {
762
- var input = _ref.input,
763
- meta = _ref.meta;
764
- var onChangeField = React.useCallback(function (event) {
765
- input.onChange(event);
766
- if (onChange) {
767
- onChange(event.target.checked, input.name);
768
- }
769
- }, [onChange]);
770
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
771
- className: clsx__default.default('form-field_type_checkbox', 'form__item_type_checkbox', classNameGroupItem),
772
- fieldClassName: "form-checkbox",
773
- inputName: input.name,
774
- inputValue: input.checked,
775
- isRequired: isRequired,
776
- metaActive: meta.active,
777
- metaError: meta.error,
778
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
779
- metaSubmitError: meta.submitError,
780
- metaSubmitFailed: meta.submitFailed,
781
- metaTouched: meta.touched,
782
- metaValid: meta.valid,
783
- tag: "label",
784
- hideMessage: hideMessage
785
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Checkbox.Checkbox, Object.assign({
786
- autoComplete: "nope",
787
- checked: input.checked,
788
- name: input.name,
789
- type: "checkbox",
790
- onBlur: input.onBlur,
791
- onChange: onChangeField,
792
- onFocus: input.onFocus
793
- }, inputProps)));
794
- });
795
- });
796
- CheckboxField.defaultProps = {
797
- inputProps: {},
798
- fieldProps: {}
799
- };
800
- CheckboxField.propTypes = {
801
- fieldProps: PropTypes__default.default.object,
802
- inputProps: PropTypes__default.default.object,
803
- isRequired: PropTypes__default.default.bool,
804
- name: PropTypes__default.default.string,
805
- onChange: PropTypes__default.default.func
806
- };
807
-
808
- var ChoiceField = /*#__PURE__*/React__default.default.memo(function ChoiceField(props) {
809
- var options = props.options,
810
- classNameGroupItem = props.classNameGroupItem,
811
- fieldProps = props.fieldProps,
812
- inputProps = props.inputProps,
813
- isMultiple = props.isMultiple,
814
- isRequired = props.isRequired,
815
- initialValue = props.initialValue,
816
- label = props.label,
817
- name = props.name,
818
- messageType = props.messageType,
819
- hideMessage = props.hideMessage,
820
- placeholder = props.placeholder;
821
- var _useForm = reactFinalForm.useForm(),
822
- change = _useForm.change;
823
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
824
- name: name,
825
- initialValue: initialValue
826
- }, function (_ref) {
827
- var input = _ref.input,
828
- meta = _ref.meta;
829
- var activeOption = React.useMemo(function () {
830
- var emptyOption = {
831
- value: null,
832
- label: null
833
- };
834
- if (input.value) {
835
- var currentOption = options.find(function (option) {
836
- return option.value === input.value;
837
- });
838
- return currentOption || emptyOption;
839
- }
840
- return emptyOption;
841
- }, [input.value]);
842
- var setActiveSegment = React.useCallback(function (option) {
843
- change(name, option.value);
844
- }, [change]);
845
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
846
- className: clsx__default.default('form-field_type_choice', 'form__item_type_choice', classNameGroupItem),
847
- fieldClassName: "form-choice",
848
- inputName: input.name,
849
- inputValue: input.value || [],
850
- isRequired: isRequired,
851
- label: label,
852
- messageType: messageType,
853
- metaActive: meta.active,
854
- metaError: meta.error,
855
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
856
- metaSubmitError: meta.submitError,
857
- metaSubmitFailed: meta.submitFailed,
858
- metaTouched: meta.touched,
859
- metaValid: meta.valid,
860
- hideMessage: hideMessage
861
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Choice.Choice, Object.assign({
862
- className: clsx__default.default(meta.active && 'form-choice_state_focus', meta.error && meta.touched && 'form-choice_state_error'),
863
- options: options,
864
- inputName: input.name,
865
- inputValue: input.value || [],
866
- isMultiple: isMultiple,
867
- isRequired: isRequired,
868
- placeholder: placeholder,
869
- active: activeOption,
870
- setActiveSegment: setActiveSegment
871
- }, inputProps)));
872
- });
873
- });
874
- ChoiceField.propTypes = {
875
- options: PropTypes__default.default.array.isRequired,
876
- name: PropTypes__default.default.string.isRequired,
877
- className: PropTypes__default.default.string,
878
- inputClass: PropTypes__default.default.string,
879
- isMultiple: PropTypes__default.default.bool,
880
- isRequired: PropTypes__default.default.bool,
881
- label: PropTypes__default.default.string,
882
- placeholder: PropTypes__default.default.string
883
- };
884
-
885
- var CustomField = /*#__PURE__*/React__default.default.memo(function CustomField(props) {
886
- var Component = props.Component,
887
- isRequired = props.isRequired,
888
- name = props.name,
889
- fieldProps = props.fieldProps,
890
- classNameGroupItem = props.classNameGroupItem,
891
- hideMessage = props.hideMessage;
892
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
893
- name: name
894
- }, function (_ref) {
895
- var input = _ref.input,
896
- meta = _ref.meta;
897
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
898
- className: clsx__default.default('form-field_type_custom', 'form__item_type_custom', classNameGroupItem),
899
- fieldClassName: 'form-custom',
900
- inputName: input.name,
901
- inputValue: input.value,
902
- isRequired: isRequired,
903
- metaActive: meta.active,
904
- metaError: meta.error,
905
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
906
- metaSubmitError: meta.submitError,
907
- metaSubmitFailed: meta.submitFailed,
908
- metaTouched: meta.touched,
909
- metaValid: meta.valid,
910
- hideMessage: hideMessage
911
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Component, Object.assign({}, props, {
912
- input: input,
913
- meta: meta
914
- })));
915
- });
916
- });
917
- CustomField.defaultProps = {
918
- inputProps: {},
919
- fieldProps: {}
920
- };
921
- CustomField.propTypes = {
922
- name: PropTypes__default.default.string.isRequired,
923
- isRequired: PropTypes__default.default.bool,
924
- fieldProps: PropTypes__default.default.object,
925
- inputProps: PropTypes__default.default.object
926
- };
927
-
928
- var CodeField = /*#__PURE__*/React__default.default.memo(function CodeField(props) {
929
- var isRequired = props.isRequired,
930
- name = props.name,
931
- fieldProps = props.fieldProps,
932
- inputProps = props.inputProps,
933
- classNameGroupItem = props.classNameGroupItem,
934
- hideMessage = props.hideMessage;
935
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
936
- name: name
937
- }, function (_ref) {
938
- var input = _ref.input,
939
- meta = _ref.meta;
940
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
941
- className: clsx__default.default('form-field_type_code', 'form__item_type_code', classNameGroupItem),
942
- fieldClassName: 'form-code',
943
- inputName: input.name,
944
- inputValue: input.value,
945
- isRequired: isRequired,
946
- metaActive: meta.active,
947
- metaError: meta.error,
948
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
949
- metaSubmitError: meta.submitError,
950
- metaSubmitFailed: meta.submitFailed,
951
- metaTouched: meta.touched,
952
- metaValid: meta.valid,
953
- hideMessage: hideMessage
954
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Code.Code, Object.assign({
955
- autoComplete: "nope",
956
- name: input.name,
957
- value: input.value,
958
- onBlur: input.onBlur,
959
- onChange: input.onChange,
960
- onFocus: input.onFocus
961
- }, inputProps)));
962
- });
963
- });
964
- CodeField.defaultProps = {
965
- inputProps: {},
966
- fieldProps: {}
967
- };
968
- CodeField.propTypes = {
969
- name: PropTypes__default.default.string.isRequired,
970
- isRequired: PropTypes__default.default.bool,
971
- fieldProps: PropTypes__default.default.object,
972
- inputProps: PropTypes__default.default.object
973
- };
974
-
975
- function DatePickerField(props) {
976
- var isRequired = props.isRequired,
977
- fieldProps = props.fieldProps,
978
- inputProps = props.inputProps,
979
- datePickerProps = props.datePickerProps,
980
- name = props.name;
981
- props.iconSize;
982
- props.iconBorder;
983
- props.iconBorderHover;
984
- props.iconFill;
985
- props.iconFillHover;
986
- props.iconRevealableShow;
987
- props.iconRevealableHide;
988
- props.iconShape;
989
- var hideMessage = props.hideMessage,
990
- onChange = props.onChange,
991
- classNameGroupItem = props.classNameGroupItem;
992
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
993
- name: name
994
- }, function (_ref) {
995
- var input = _ref.input,
996
- meta = _ref.meta;
997
- var onChangeField = React.useCallback(function (value) {
998
- input.onChange(value);
999
- if (onChange) {
1000
- onChange(value, input.name);
1001
- }
1002
- }, [onChange]);
1003
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1004
- className: clsx__default.default('form-field_type_datepicker', 'form__item_type_datepicker', classNameGroupItem),
1005
- fieldClassName: "form-datepicker",
1006
- inputName: input.name,
1007
- inputValue: input.value || '',
1008
- isRequired: isRequired,
1009
- metaActive: meta.active,
1010
- metaError: meta.error,
1011
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
1012
- metaSubmitError: meta.submitError,
1013
- metaSubmitFailed: meta.submitFailed,
1014
- metaTouched: meta.touched,
1015
- metaValid: meta.valid,
1016
- hideMessage: hideMessage
1017
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(DatePicker.DatePickerInput, {
1018
- name: input.name,
1019
- value: input.value || '',
1020
- onBlur: input.onBlur,
1021
- onChange: onChangeField,
1022
- onFocus: input.onFocus,
1023
- inputProps: inputProps,
1024
- datePickerProps: datePickerProps
1025
- }));
1026
- });
1027
- }
1028
- DatePickerField.defaultProps = {
1029
- inputProps: {},
1030
- fieldProps: {}
1031
- };
1032
- DatePickerField.propTypes = {
1033
- fieldProps: PropTypes__default.default.object,
1034
- inputProps: PropTypes__default.default.object,
1035
- isRequired: PropTypes__default.default.bool,
1036
- name: PropTypes__default.default.string.isRequired,
1037
- onChange: PropTypes__default.default.func
1038
- };
1039
-
1040
- function getFileByURL(_x) {
1041
- return _getFileByURL.apply(this, arguments);
1042
- }
1043
- function _getFileByURL() {
1044
- _getFileByURL = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(url) {
1045
- var _response$headers$con, response, blobObject, dirtyFilename, filename, typeParts, fileType;
1046
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
1047
- while (1) switch (_context3.prev = _context3.next) {
1048
- case 0:
1049
- _context3.prev = 0;
1050
- _context3.next = 3;
1051
- return axios__default.default({
1052
- url: "/api/" + url + "/",
1053
- responseType: 'blob'
1054
- });
1055
- case 3:
1056
- response = _context3.sent;
1057
- blobObject = response.data;
1058
- dirtyFilename = (_response$headers$con = response.headers['content-disposition']) == null ? void 0 : _response$headers$con.split('filename=')[1]; // Remove double quotes
1059
- filename = dirtyFilename == null ? void 0 : dirtyFilename.substring(1).slice(0, -1);
1060
- if (!filename) {
1061
- typeParts = blobObject.type.split('/');
1062
- fileType = typeParts[typeParts.length - 1];
1063
- filename = new Date().getTime() + "." + fileType;
1064
- }
1065
- return _context3.abrupt("return", new File([blobObject], filename, {
1066
- type: blobObject.type
1067
- }));
1068
- case 11:
1069
- _context3.prev = 11;
1070
- _context3.t0 = _context3["catch"](0);
1071
- console.log('error: ', _context3.t0);
1072
- return _context3.abrupt("return", null);
1073
- case 15:
1074
- case "end":
1075
- return _context3.stop();
1076
- }
1077
- }, _callee3, null, [[0, 11]]);
1078
- }));
1079
- return _getFileByURL.apply(this, arguments);
1080
- }
1081
- function convertToFiles(_x2, _x3) {
1082
- return _convertToFiles.apply(this, arguments);
1083
- }
1084
- function _convertToFiles() {
1085
- _convertToFiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(inputValue, isPreviews) {
1086
- var newFiles, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, value, newFile, isURL;
1087
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
1088
- while (1) switch (_context4.prev = _context4.next) {
1089
- case 0:
1090
- newFiles = [];
1091
- _iteratorAbruptCompletion = false;
1092
- _didIteratorError = false;
1093
- _context4.prev = 3;
1094
- _iterator = _asyncIterator(castArray__default.default(inputValue));
1095
- case 5:
1096
- _context4.next = 7;
1097
- return _iterator.next();
1098
- case 7:
1099
- if (!(_iteratorAbruptCompletion = !(_step = _context4.sent).done)) {
1100
- _context4.next = 21;
1101
- break;
1102
- }
1103
- value = _step.value;
1104
- newFile = null; // Download image by url and save as File instance
1105
- isURL = typeof value === 'string' && value.includes('/');
1106
- if (!(value.image || isURL)) {
1107
- _context4.next = 16;
1108
- break;
1109
- }
1110
- _context4.next = 14;
1111
- return getFileByURL(value.image || value);
1112
- case 14:
1113
- newFile = _context4.sent;
1114
- if (newFile) {
1115
- setFileDataURL(newFile);
1116
- }
1117
- case 16:
1118
- // Convert dataURL to File instance
1119
- if (value.dataURL) {
1120
- newFile = common.createFileFromDataURL(value.name || value.path, value.dataURL);
1121
- newFile.dataURL = value.dataURL;
1122
- }
1123
-
1124
- // Save new File to state
1125
- if (newFile) {
1126
- newFile.id = value.id;
1127
- if (isPreviews) {
1128
- newFile.preview = URL.createObjectURL(newFile);
1129
- }
1130
- newFiles.push(newFile);
1131
- }
1132
-
1133
- // else if (value) {
1134
- // newFiles.push({
1135
- // name: value,
1136
- // error: 'File is unavailable',
1137
- // })
1138
- // }
1139
- case 18:
1140
- _iteratorAbruptCompletion = false;
1141
- _context4.next = 5;
1142
- break;
1143
- case 21:
1144
- _context4.next = 27;
1145
- break;
1146
- case 23:
1147
- _context4.prev = 23;
1148
- _context4.t0 = _context4["catch"](3);
1149
- _didIteratorError = true;
1150
- _iteratorError = _context4.t0;
1151
- case 27:
1152
- _context4.prev = 27;
1153
- _context4.prev = 28;
1154
- if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
1155
- _context4.next = 32;
1156
- break;
1157
- }
1158
- _context4.next = 32;
1159
- return _iterator["return"]();
1160
- case 32:
1161
- _context4.prev = 32;
1162
- if (!_didIteratorError) {
1163
- _context4.next = 35;
1164
- break;
1165
- }
1166
- throw _iteratorError;
1167
- case 35:
1168
- return _context4.finish(32);
1169
- case 36:
1170
- return _context4.finish(27);
1171
- case 37:
1172
- return _context4.abrupt("return", newFiles);
1173
- case 38:
1174
- case "end":
1175
- return _context4.stop();
1176
- }
1177
- }, _callee4, null, [[3, 23, 27, 37], [28,, 32, 36]]);
1178
- }));
1179
- return _convertToFiles.apply(this, arguments);
1180
- }
1181
- function setFileDataURL(file, resolve) {
1182
- resolve = resolve || function () {};
1183
- // Init reader and save his file
1184
- var reader = new FileReader();
1185
- reader._readedFile = file;
1186
-
1187
- // Set handlers
1188
- reader.onabort = function () {
1189
- return resolve();
1190
- };
1191
- reader.onerror = function () {
1192
- return resolve();
1193
- };
1194
- reader.onload = function (event) {
1195
- event.target._readedFile.dataURL = reader.result;
1196
- resolve();
1197
- };
1198
- // Run reader
1199
- if (file instanceof File) {
1200
- reader.readAsDataURL(file);
1201
- } else {
1202
- resolve();
1203
- }
1204
- }
1205
- var FileInputDropzone = /*#__PURE__*/React__default.default.memo(function FileInputDropzone(props) {
1206
- var inputName = props.inputName,
1207
- size = props.size,
1208
- className = props.className,
1209
- fileErrorText = props.fileErrorText,
1210
- hintTitleTextSize = props.hintTitleTextSize,
1211
- removeThumbTextSize = props.removeThumbTextSize,
1212
- removeThumbTextColor = props.removeThumbTextColor,
1213
- removeThumbTextWeight = props.removeThumbTextWeight,
1214
- thumbNameTextSize = props.thumbNameTextSize,
1215
- thumbNameTextColor = props.thumbNameTextColor,
1216
- removeThumbTextHoverColor = props.removeThumbTextHoverColor,
1217
- thumbNameTextWrap = props.thumbNameTextWrap,
1218
- thumbNameTextWeight = props.thumbNameTextWeight,
1219
- hintTitleTextColor = props.hintTitleTextColor,
1220
- hintTitleTextWrap = props.hintTitleTextWrap,
1221
- thumbColumn = props.thumbColumn,
1222
- hintTitleTextWeight = props.hintTitleTextWeight,
1223
- hintDescriptionTextSize = props.hintDescriptionTextSize,
1224
- hintDescriptionTextColor = props.hintDescriptionTextColor,
1225
- hintDescriptionTextWrap = props.hintDescriptionTextWrap,
1226
- hintDescriptionTextWeight = props.hintDescriptionTextWeight,
1227
- errorMessageTextSize = props.errorMessageTextSize,
1228
- errorMessageTextWeight = props.errorMessageTextWeight,
1229
- errorMessageTextColor = props.errorMessageTextColor,
1230
- inputValue = props.inputValue,
1231
- maxFiles = props.maxFiles,
1232
- maxSize = props.maxSize,
1233
- removeThumbText = props.removeThumbText,
1234
- hintTitle = props.hintTitle,
1235
- hintDescription = props.hintDescription,
1236
- isShowFilename = props.isShowFilename,
1237
- isPreviews = props.isPreviews;
1238
- props.loadingText;
1239
- var _props$dropzoneProps = props.dropzoneProps,
1240
- dropzoneProps = _props$dropzoneProps === void 0 ? {} : _props$dropzoneProps,
1241
- onAddFiles = props.onAddFiles,
1242
- onDeleteFile = props.onDeleteFile;
1243
- var _useState = React.useState(''),
1244
- fileError = _useState[0],
1245
- setFileError = _useState[1];
1246
- var _useState2 = React.useState(false),
1247
- fileIsLoading = _useState2[0],
1248
- setFileIsLoading = _useState2[1];
1249
- // State with instances of "File" type
1250
- var _useState3 = React.useState(inputValue ? castArray__default.default(inputValue) : []),
1251
- files = _useState3[0],
1252
- setFiles = _useState3[1];
1253
-
1254
- // Save to mobx state
1255
- var _useForm = reactFinalForm.useForm(),
1256
- change = _useForm.change;
1257
- var changeFormState = React.useCallback(function (newFiles) {
1258
- // If max files in dropzone is 1 - return file as it self, else as array of files
1259
- // ps: for old projects compatibility
1260
- var toSave = dropzoneProps.maxFiles == 1 ? newFiles[0] : newFiles;
1261
- change(inputName, toSave);
1262
- return toSave;
1263
- }, [dropzoneProps, change]);
1264
-
1265
- // Create dropzone options
1266
- var _useDropzone = reactDropzone.useDropzone(Object.assign({
1267
- maxSize: maxSize || 10485760,
1268
- // 10mb
1269
- maxFiles: maxFiles || 5
1270
- }, dropzoneProps, {
1271
- getFilesFromEvent: function () {
1272
- var _getFilesFromEvent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(event) {
1273
- var result, newFiles;
1274
- return _regeneratorRuntime().wrap(function _callee$(_context) {
1275
- while (1) switch (_context.prev = _context.next) {
1276
- case 0:
1277
- _context.next = 2;
1278
- return fileSelector.fromEvent(event);
1279
- case 2:
1280
- result = _context.sent;
1281
- newFiles = result.filter(function (item) {
1282
- return item instanceof File;
1283
- }); // Add exists and new files to accepted(or rejected)
1284
- return _context.abrupt("return", [].concat(files, newFiles));
1285
- case 5:
1286
- case "end":
1287
- return _context.stop();
1288
- }
1289
- }, _callee);
1290
- }));
1291
- function getFilesFromEvent(_x4) {
1292
- return _getFilesFromEvent.apply(this, arguments);
1293
- }
1294
- return getFilesFromEvent;
1295
- }(),
1296
- onDropAccepted: function onDropAccepted(acceptedFiles, event) {
1297
- // If dropped files has accepted and we need a previews
1298
- if (isPreviews) {
1299
- // Add preview to every file
1300
- acceptedFiles.forEach(function (file) {
1301
- if (!file.error) {
1302
- file.preview = URL.createObjectURL(file);
1303
- }
1304
- });
1305
- }
1306
- // Save to form data (including empty when files are not valid)
1307
- setFiles(acceptedFiles);
1308
- setFileError('');
1309
-
1310
- // Save DataURL for all files
1311
- var readerPromisesList = acceptedFiles.map(function (file) {
1312
- return new Promise(function (resolve) {
1313
- return setFileDataURL(file, resolve);
1314
- });
1315
- });
1316
- // Save files to form values
1317
- Promise.all(readerPromisesList).then(function () {
1318
- var filesToSave = changeFormState(acceptedFiles);
1319
- if (onAddFiles) {
1320
- onAddFiles(filesToSave, inputName);
1321
- }
1322
- });
1323
- },
1324
- onDropRejected: function onDropRejected(rejectedFiles, event) {
1325
- // If dropped files has rejected
1326
- if (rejectedFiles.length) {
1327
- var _rejectedFiles$0$erro;
1328
- var firstFileError = (_rejectedFiles$0$erro = rejectedFiles[0].errors[0]) == null ? void 0 : _rejectedFiles$0$erro.message;
1329
- // Show error
1330
- setFileError(firstFileError || 'Error on adding file');
1331
- } else {
1332
- // Else clean error
1333
- setFileError('');
1334
- }
1335
- }
1336
- })),
1337
- getRootProps = _useDropzone.getRootProps,
1338
- getInputProps = _useDropzone.getInputProps;
1339
-
1340
- // Delete file from dropzone
1341
- var removeFile = React.useCallback(function (event, index) {
1342
- event.stopPropagation();
1343
- event.preventDefault();
1344
- var newFiles = [].concat(files);
1345
- newFiles.splice(index, 1);
1346
- if (onDeleteFile) {
1347
- onDeleteFile(files[index], inputName);
1348
- }
1349
- changeFormState(newFiles);
1350
- }, [files, changeFormState, onDeleteFile]);
1351
-
1352
- //
1353
- var convertFiledValueAndSaveAsFiles = React.useCallback( /*#__PURE__*/function () {
1354
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(newInputValue) {
1355
- var newFiles;
1356
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
1357
- while (1) switch (_context2.prev = _context2.next) {
1358
- case 0:
1359
- setFileIsLoading(true);
1360
- _context2.next = 3;
1361
- return convertToFiles(newInputValue, isPreviews);
1362
- case 3:
1363
- newFiles = _context2.sent;
1364
- setFileIsLoading(false);
1365
- setFiles(newFiles);
1366
- return _context2.abrupt("return", newFiles);
1367
- case 7:
1368
- case "end":
1369
- return _context2.stop();
1370
- }
1371
- }, _callee2);
1372
- }));
1373
- return function (_x5) {
1374
- return _ref.apply(this, arguments);
1375
- };
1376
- }(), [isPreviews]);
1377
- React.useEffect(function () {
1378
- // First time convert value to Files and save to local and form state
1379
- convertFiledValueAndSaveAsFiles(inputValue).then(function (newFiles) {
1380
- return changeFormState(newFiles);
1381
- });
1382
- }, []); // eslint-disable-line
1383
-
1384
- React.useEffect(function () {
1385
- // Everytime convert value to Files and save to local state
1386
- if (!inputValue) {
1387
- setFiles([]);
1388
- } else {
1389
- convertFiledValueAndSaveAsFiles(inputValue);
1390
- }
1391
- // only "inputValue"
1392
- }, [inputValue]); // eslint-disable-line
1393
-
1394
- React.useEffect(function () {
1395
- // Make sure to revoke the data uris to avoid memory leaks, will run on unmount
1396
- return function () {
1397
- return files.forEach(function (file) {
1398
- return URL.revokeObjectURL(file == null ? void 0 : file.preview);
1399
- });
1400
- };
1401
- }, []); // eslint-disable-line
1402
-
1403
- var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1404
- prefix: 'fill_',
1405
- propsKey: 'fill'
1406
- });
1407
- var fillHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1408
- prefix: 'fill_hover_',
1409
- propsKey: 'fillHover'
1410
- });
1411
- var borderWidthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1412
- prefix: 'border-width_',
1413
- propsKey: 'borderWidth'
1414
- });
1415
- var borderColorClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1416
- prefix: 'border-color_',
1417
- propsKey: 'borderColor'
1418
- });
1419
- var borderColorHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1420
- prefix: 'border-color_hover_',
1421
- propsKey: 'borderColorHover'
1422
- });
1423
- var borderTypeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1424
- prefix: 'border_type_',
1425
- propsKey: 'borderType'
1426
- });
1427
- var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1428
- prefix: 'form-dropzone_shape_',
1429
- propsKey: 'shape'
1430
- });
1431
- var thumbBorderWidthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1432
- prefix: 'border-width_',
1433
- propsKey: 'thumbBorderWidth'
1434
- });
1435
- var thumbDirectionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1436
- prefix: 'form-dropzone__thumb_direction_',
1437
- propsKey: 'thumbDirection'
1438
- });
1439
- var thumbBorderColorClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1440
- prefix: 'border-color_',
1441
- propsKey: 'thumbBorderColor'
1442
- });
1443
- var thumbBorderColorHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1444
- prefix: 'border-color_hover_',
1445
- propsKey: 'thumbBorderColorHover'
1446
- });
1447
- var thumbBorderTypeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1448
- prefix: 'border_type_',
1449
- propsKey: 'thumbBorderType'
1450
- });
1451
- return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, /*#__PURE__*/React__default.default.createElement("div", getRootProps({
1452
- className: "form-dropzone__dropzone dropzone " + className + " thumbColumn form-dropzone__dropzone_size_" + size + " " + shapeClass
1453
- }), /*#__PURE__*/React__default.default.createElement("input", Object.assign({}, getInputProps(), {
1454
- name: inputName
1455
- })), /*#__PURE__*/React__default.default.createElement("div", {
1456
- className: clsx__default.default('form-dropzone__dropzone-wrapper', thumbColumn && "form-dropzone__dropzone-wrapper_column_" + thumbColumn, fillClass, fillHoverClass, borderWidthClass, borderColorClass, borderColorHoverClass, borderTypeClass)
1457
- }, files.map(function (file, i) {
1458
- return /*#__PURE__*/React__default.default.createElement("aside", {
1459
- className: clsx__default.default('form-dropzone__thumb', fillClass, thumbDirectionClass, thumbBorderWidthClass, thumbBorderColorClass, thumbBorderColorHoverClass, thumbBorderTypeClass),
1460
- key: "" + (file.id || file.name + "_" + i || 'i' + i)
1461
- }, isPreviews && !file.error && /*#__PURE__*/React__default.default.createElement("div", {
1462
- className: "form-dropzone__thumb-image"
1463
- }, /*#__PURE__*/React__default.default.createElement("img", {
1464
- className: "form-dropzone__thumb-image-inner",
1465
- src: file.preview || file.image,
1466
- onLoad: function onLoad() {
1467
- // Revoke data uri after image is loaded
1468
- URL.revokeObjectURL(file.preview);
1469
- }
1470
- })), file.error && /*#__PURE__*/React__default.default.createElement("div", null, /*#__PURE__*/React__default.default.createElement(Text.Text, {
1471
- size: thumbNameTextSize,
1472
- textColor: thumbNameTextColor,
1473
- textWrap: thumbNameTextWrap,
1474
- textWeight: thumbNameTextWeight
1475
- }, fileErrorText || file.error)), isShowFilename && /*#__PURE__*/React__default.default.createElement("div", {
1476
- className: "form-dropzone__thumb-name"
1477
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
1478
- size: thumbNameTextSize,
1479
- textColor: thumbNameTextColor,
1480
- textWrap: thumbNameTextWrap,
1481
- textWeight: thumbNameTextWeight,
1482
- className: "form-dropzone__thumb-name-inner"
1483
- }, file.name)), fileIsLoading && /*#__PURE__*/React__default.default.createElement("div", {
1484
- className: "form-dropzone__thumb-loader"
1485
- }, /*#__PURE__*/React__default.default.createElement(Loader.Loader, {
1486
- fill: "surfacePrimary",
1487
- height: "fill",
1488
- itemFill: "surfaceItemAccent",
1489
- set: "simple",
1490
- width: "fill"
1491
- })), /*#__PURE__*/React__default.default.createElement("div", {
1492
- className: "form-dropzone__thumb-remove",
1493
- onClick: function onClick(event) {
1494
- return removeFile(event, i);
1495
- }
1496
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
1497
- size: removeThumbTextSize,
1498
- textColor: removeThumbTextColor,
1499
- textWeight: removeThumbTextWeight,
1500
- textColorHover: removeThumbTextHoverColor,
1501
- className: "form-dropzone__thumb-remove-text"
1502
- }, removeThumbText || 'Remove')));
1503
- }), !files.length ? /*#__PURE__*/React__default.default.createElement("div", {
1504
- className: "form-dropzone__hint"
1505
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
1506
- size: hintTitleTextSize,
1507
- textColor: hintTitleTextColor,
1508
- textWrap: hintTitleTextWrap,
1509
- textWeight: hintTitleTextWeight,
1510
- className: "form-dropzone__hint-title"
1511
- }, hintTitle || 'Select a file or drag in form'), /*#__PURE__*/React__default.default.createElement(Text.Text, {
1512
- size: hintDescriptionTextSize,
1513
- textColor: hintDescriptionTextColor,
1514
- textWrap: hintDescriptionTextWrap,
1515
- textWeight: hintDescriptionTextWeight,
1516
- className: "form-dropzone__hint-text"
1517
- }, hintDescription)) : /*#__PURE__*/React__default.default.createElement("div", {
1518
- className: "form-dropzone__hint form-dropzone__hint_type_add-more"
1519
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
1520
- size: hintTitleTextSize,
1521
- textColor: hintTitleTextColor,
1522
- textWrap: hintTitleTextWrap,
1523
- textWeight: hintTitleTextWeight,
1524
- className: "form-dropzone__hint-title"
1525
- }, hintTitle || 'Select a file or drag in form'), /*#__PURE__*/React__default.default.createElement(Text.Text, {
1526
- size: hintDescriptionTextSize,
1527
- textColor: hintDescriptionTextColor,
1528
- textWrap: hintDescriptionTextWrap,
1529
- textWeight: hintDescriptionTextWeight,
1530
- className: "form-dropzone__hint-text"
1531
- }, hintDescription)))), fileError && /*#__PURE__*/React__default.default.createElement("div", {
1532
- className: "form-field__message"
1533
- }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
1534
- className: "form-field__message-item form-field__message-item_type_message",
1535
- size: errorMessageTextSize,
1536
- textWeight: errorMessageTextWeight,
1537
- textColor: errorMessageTextColor
1538
- }, fileError)));
1539
- });
1540
- FileInputDropzone.propTypes = {
1541
- dropzoneProps: PropTypes__default.default.object,
1542
- hintDescription: PropTypes__default.default.string,
1543
- hintTitle: PropTypes__default.default.string,
1544
- inputName: PropTypes__default.default.string,
1545
- inputValue: PropTypes__default.default.any,
1546
- isPreviews: PropTypes__default.default.bool,
1547
- isShowFilename: PropTypes__default.default.bool,
1548
- loadingText: PropTypes__default.default.string,
1549
- metaError: PropTypes__default.default.string,
1550
- metaTouched: PropTypes__default.default.bool,
1551
- removeThumbText: PropTypes__default.default.string,
1552
- onAddFiles: PropTypes__default.default.func,
1553
- onDeleteFile: PropTypes__default.default.func
1554
- };
1555
-
1556
- var FileInput = /*#__PURE__*/React__default.default.memo(function FileInput(props) {
1557
- var name = props.name,
1558
- shape = props.shape,
1559
- size = props.size,
1560
- borderWidth = props.borderWidth,
1561
- borderColor = props.borderColor,
1562
- borderColorHover = props.borderColorHover,
1563
- borderType = props.borderType,
1564
- label = props.label,
1565
- thumbBorderWidth = props.thumbBorderWidth,
1566
- thumbBorderColor = props.thumbBorderColor,
1567
- thumbBorderColorHover = props.thumbBorderColorHover,
1568
- thumbBorderType = props.thumbBorderType,
1569
- removeThumbTextHoverColor = props.removeThumbTextHoverColor,
1570
- labelTextColor = props.labelTextColor,
1571
- fill = props.fill,
1572
- fillHover = props.fillHover,
1573
- className = props.className,
1574
- removeThumbText = props.removeThumbText,
1575
- thumbNameTextSize = props.thumbNameTextSize,
1576
- thumbNameTextColor = props.thumbNameTextColor,
1577
- thumbNameTextWrap = props.thumbNameTextWrap,
1578
- thumbNameTextWeight = props.thumbNameTextWeight,
1579
- removeThumbTextSize = props.removeThumbTextSize,
1580
- removeThumbTextColor = props.removeThumbTextColor,
1581
- removeThumbTextWeight = props.removeThumbTextWeight,
1582
- hintTitle = props.hintTitle,
1583
- errorMessageTextSize = props.errorMessageTextSize,
1584
- errorMessageTextWeight = props.errorMessageTextWeight,
1585
- errorMessageTextColor = props.errorMessageTextColor,
1586
- fieldProps = props.fieldProps,
1587
- hintTitleTextSize = props.hintTitleTextSize,
1588
- hintTitleTextColor = props.hintTitleTextColor,
1589
- hintTitleTextWrap = props.hintTitleTextWrap,
1590
- hintTitleTextWeight = props.hintTitleTextWeight,
1591
- hintDescriptionTextSize = props.hintDescriptionTextSize,
1592
- hintDescriptionTextColor = props.hintDescriptionTextColor,
1593
- hintDescriptionTextWrap = props.hintDescriptionTextWrap,
1594
- hintDescriptionTextWeight = props.hintDescriptionTextWeight,
1595
- hideMessage = props.hideMessage,
1596
- thumbDirection = props.thumbDirection,
1597
- hintDescription = props.hintDescription,
1598
- isShowFilename = props.isShowFilename,
1599
- fileErrorText = props.fileErrorText,
1600
- dropzoneProps = props.dropzoneProps,
1601
- maxFiles = props.maxFiles,
1602
- maxSize = props.maxSize,
1603
- thumbColumn = props.thumbColumn,
1604
- isRequired = props.isRequired,
1605
- isPreviews = props.isPreviews,
1606
- onAddFiles = props.onAddFiles,
1607
- onDeleteFile = props.onDeleteFile,
1608
- classNameGroupItem = props.classNameGroupItem;
1609
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
1610
- name: name
1611
- }, function (_ref) {
1612
- var input = _ref.input,
1613
- meta = _ref.meta;
1614
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1615
- className: clsx__default.default('form-field_type_dropzone', 'form__item_type_dropzone', classNameGroupItem),
1616
- fieldClassName: "form-dropzone",
1617
- inputName: input.name,
1618
- inputValue: input.value,
1619
- isRequired: isRequired,
1620
- label: label,
1621
- labelTextColor: labelTextColor,
1622
- metaActive: meta.active,
1623
- metaError: meta.error,
1624
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
1625
- metaSubmitError: meta.submitError,
1626
- metaSubmitFailed: meta.submitFailed,
1627
- metaTouched: meta.touched,
1628
- metaValid: meta.valid,
1629
- hideMessage: hideMessage
1630
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(FileInputDropzone, {
1631
- dropzoneProps: dropzoneProps,
1632
- hintDescription: hintDescription,
1633
- hintTitle: hintTitle,
1634
- borderWidth: borderWidth,
1635
- borderColor: borderColor,
1636
- borderColorHover: borderColorHover,
1637
- borderType: borderType,
1638
- thumbBorderWidth: thumbBorderWidth,
1639
- thumbBorderColor: thumbBorderColor,
1640
- thumbBorderColorHover: thumbBorderColorHover,
1641
- thumbBorderType: thumbBorderType,
1642
- fileErrorText: fileErrorText,
1643
- fill: fill,
1644
- size: size,
1645
- maxFiles: maxFiles,
1646
- maxSize: maxSize,
1647
- removeThumbTextHoverColor: removeThumbTextHoverColor,
1648
- fillHover: fillHover,
1649
- className: className,
1650
- thumbColumn: thumbColumn,
1651
- thumbDirection: thumbDirection,
1652
- inputName: input.name,
1653
- inputValue: input.value,
1654
- thumbNameTextSize: thumbNameTextSize,
1655
- thumbNameTextColor: thumbNameTextColor,
1656
- thumbNameTextWrap: thumbNameTextWrap,
1657
- thumbNameTextWeight: thumbNameTextWeight,
1658
- hintTitleTextSize: hintTitleTextSize,
1659
- hintTitleTextColor: hintTitleTextColor,
1660
- hintTitleTextWrap: hintTitleTextWrap,
1661
- hintTitleTextWeight: hintTitleTextWeight,
1662
- removeThumbTextSize: removeThumbTextSize,
1663
- removeThumbTextColor: removeThumbTextColor,
1664
- removeThumbTextWeight: removeThumbTextWeight,
1665
- hintDescriptionTextSize: hintDescriptionTextSize,
1666
- hintDescriptionTextColor: hintDescriptionTextColor,
1667
- hintDescriptionTextWrap: hintDescriptionTextWrap,
1668
- hintDescriptionTextWeight: hintDescriptionTextWeight,
1669
- errorMessageTextSize: errorMessageTextSize,
1670
- errorMessageWeight: errorMessageTextWeight,
1671
- errorMessageTextColor: errorMessageTextColor,
1672
- isPreviews: isPreviews,
1673
- shape: shape,
1674
- isShowFilename: isShowFilename,
1675
- metaError: meta.error,
1676
- metaTouched: meta.touched,
1677
- removeThumbText: removeThumbText,
1678
- onAddFiles: onAddFiles,
1679
- onDeleteFile: onDeleteFile
1680
- }));
1681
- });
1682
- });
1683
- FileInput.defaultProps = {
1684
- errorMessageTextSize: 's',
1685
- errorMessageTextColor: 'errorTextPrimary',
1686
- thumbColumn: 1,
1687
- thumbDirection: 'vertical'
1688
- };
1689
- FileInput.propTypes = {
1690
- name: PropTypes__default.default.string.isRequired,
1691
- className: PropTypes__default.default.string,
1692
- classNameGroupItem: PropTypes__default.default.string,
1693
- classNameInput: PropTypes__default.default.string,
1694
- classNameInputWrapper: PropTypes__default.default.string,
1695
- dropzoneProps: PropTypes__default.default.object,
1696
- hintDescription: PropTypes__default.default.string,
1697
- hintTitle: PropTypes__default.default.string,
1698
- inputClass: PropTypes__default.default.string,
1699
- isPreviews: PropTypes__default.default.bool,
1700
- isRequired: PropTypes__default.default.bool,
1701
- isShowFilename: PropTypes__default.default.bool,
1702
- label: PropTypes__default.default.any,
1703
- removeThumbText: PropTypes__default.default.string,
1704
- onAddFiles: PropTypes__default.default.func,
1705
- onDeleteFile: PropTypes__default.default.func
1706
- };
1707
-
1708
- var Group = /*#__PURE__*/React__default.default.memo(function Group(props) {
1709
- var after = props.after,
1710
- before = props.before,
1711
- className = props.className,
1712
- label = props.label,
1713
- labelTextColor = props.labelTextColor,
1714
- labelTextSize = props.labelTextSize,
1715
- labelTextWeight = props.labelTextWeight,
1716
- message = props.message,
1717
- errorMessageTextSize = props.errorMessageTextSize,
1718
- errorMessageTextWeight = props.errorMessageTextWeight,
1719
- errorMessageTextColor = props.errorMessageTextColor,
1720
- messageTextSize = props.messageTextSize,
1721
- messageTextWeight = props.messageTextWeight,
1722
- messageTextColor = props.messageTextColor,
1723
- children = props.children,
1724
- dataTour = props.dataTour,
1725
- hideMessage = props.hideMessage,
1726
- name = props.name,
1727
- showErrorsOnSubmit = props.showErrorsOnSubmit;
1728
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
1729
- name: name
1730
- }, function (_ref) {
1731
- _ref.input;
1732
- var meta = _ref.meta;
1733
- var error = meta.error || !meta.modifiedSinceLastSubmit && meta.submitError || false;
1734
- var showError = React.useMemo(function () {
1735
- if (showErrorsOnSubmit) {
1736
- return meta.submitFailed && meta.touched && error;
1737
- } else {
1738
- return meta.touched && error;
1739
- }
1740
- }, [showErrorsOnSubmit, meta.submitFailed, meta.touched, error]);
1741
- return /*#__PURE__*/React__default.default.createElement("div", {
1742
- className: clsx__default.default('form__group', className),
1743
- "data-tour": dataTour
1744
- }, /*#__PURE__*/React__default.default.createElement("div", {
1745
- className: "form__group-wrapper"
1746
- }, before, /*#__PURE__*/React__default.default.createElement("div", {
1747
- className: "form__group-label"
1748
- }, /*#__PURE__*/React__default.default.createElement(Title.Title, {
1749
- textColor: labelTextColor,
1750
- size: labelTextSize,
1751
- textWeight: labelTextWeight
1752
- }, label)), /*#__PURE__*/React__default.default.createElement("div", {
1753
- className: "form__group-items"
1754
- }, children), after), !hideMessage && /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, Boolean(showError) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
1755
- className: "form__group-message form__group-message_type-error",
1756
- size: errorMessageTextSize,
1757
- textWeight: errorMessageTextWeight,
1758
- textColor: errorMessageTextColor,
1759
- id: name + "-error"
1760
- }, error), Boolean(message) && !showError && /*#__PURE__*/React__default.default.createElement(Text.Text, {
1761
- className: "form__group-message",
1762
- size: messageTextSize,
1763
- textWeight: messageTextWeight,
1764
- textColor: messageTextColor
1765
- }, message), Boolean(!showError) && Boolean(!message) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
1766
- className: "form__group-message",
1767
- size: messageTextSize
1768
- }, "\xA0")));
1769
- });
1770
- });
1771
- Group.defaultProps = {
1772
- inputProps: {},
1773
- fieldProps: {},
1774
- type: 'normal',
1775
- errorMessageTextSize: 's',
1776
- errorMessageTextColor: 'errorTextPrimary',
1777
- messageTextSize: 's',
1778
- messageTextColor: 'surfaceTextTertiary'
1779
- };
1780
- Group.propTypes = {
1781
- name: PropTypes__default.default.string.isRequired,
1782
- isRequired: PropTypes__default.default.bool,
1783
- fieldProps: PropTypes__default.default.object,
1784
- inputProps: PropTypes__default.default.object
1785
- };
1786
-
1787
- var InputField = /*#__PURE__*/React__default.default.memo(function InputField(props) {
1788
- var isPassword = props.isPassword,
1789
- isRequired = props.isRequired,
1790
- fieldProps = props.fieldProps,
1791
- inputProps = props.inputProps,
1792
- isRevealable = props.isRevealable,
1793
- name = props.name,
1794
- parse = props.parse,
1795
- iconSize = props.iconSize;
1796
- props.iconBorder;
1797
- props.iconBorderHover;
1798
- var iconFill = props.iconFill,
1799
- iconFillHover = props.iconFillHover,
1800
- iconRevealableShow = props.iconRevealableShow,
1801
- iconRevealableHide = props.iconRevealableHide,
1802
- iconShape = props.iconShape,
1803
- hideMessage = props.hideMessage,
1804
- onChange = props.onChange,
1805
- classNameGroupItem = props.classNameGroupItem;
1806
- var _useState = React.useState(false),
1807
- isRevealed = _useState[0],
1808
- setIsRevealed = _useState[1];
1809
- var inputType = React.useMemo(function () {
1810
- if (isPassword) {
1811
- return isRevealed ? 'text' : 'password';
1812
- } else {
1813
- return 'text';
1814
- }
1815
- }, [isRevealed, isPassword]);
1816
- var revealeHandler = React.useCallback(function (e) {
1817
- e.preventDefault();
1818
- setIsRevealed(function (prev) {
1819
- return !prev;
1820
- });
1821
- }, [setIsRevealed]);
1822
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
1823
- name: name,
1824
- parse: parse
1825
- }, function (_ref) {
1826
- var input = _ref.input,
1827
- meta = _ref.meta;
1828
- var onChangeField = React.useCallback(function (event) {
1829
- input.onChange(event);
1830
- if (onChange) {
1831
- onChange(event.target.value, input.name);
1832
- }
1833
- }, [onChange]);
1834
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1835
- className: clsx__default.default('form-field_type_input', 'form__item_type_input', classNameGroupItem),
1836
- fieldClassName: isRevealable ? 'form-password' : 'form-input',
1837
- inputName: input.name,
1838
- inputValue: input.value || '',
1839
- isRequired: isRequired,
1840
- metaActive: meta.active,
1841
- metaError: meta.error,
1842
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
1843
- metaSubmitError: meta.submitError,
1844
- metaSubmitFailed: meta.submitFailed,
1845
- metaTouched: meta.touched,
1846
- metaValid: meta.valid,
1847
- hideMessage: hideMessage
1848
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Input.Input, Object.assign({
1849
- className: clsx__default.default(meta.active && 'input_state_focus', meta.error && meta.touched && 'input_state_error'),
1850
- autoComplete: "nope",
1851
- name: input.name,
1852
- type: inputType,
1853
- value: input.value || '',
1854
- onBlur: input.onBlur,
1855
- onChange: onChangeField,
1856
- onFocus: input.onFocus
1857
- }, inputProps)), isRevealable && /*#__PURE__*/React__default.default.createElement(Icon.Icon, {
1858
- className: "form-field__icon",
1859
- iconFill: iconFill,
1860
- iconFillHover: iconFillHover,
1861
- SvgImage: isRevealed ? iconRevealableHide : iconRevealableShow,
1862
- imageSrc: isRevealed ? iconRevealableHide : iconRevealableShow,
1863
- shape: iconShape,
1864
- size: iconSize,
1865
- onClick: revealeHandler
1866
- }));
1867
- });
1868
- });
1869
- InputField.defaultProps = {
1870
- inputProps: {},
1871
- fieldProps: {}
1872
- };
1873
- InputField.propTypes = {
1874
- fieldProps: PropTypes__default.default.object,
1875
- inputProps: PropTypes__default.default.object,
1876
- isPassword: PropTypes__default.default.bool,
1877
- isRequired: PropTypes__default.default.bool,
1878
- isRevealable: PropTypes__default.default.bool,
1879
- name: PropTypes__default.default.string.isRequired,
1880
- onChange: PropTypes__default.default.func
1881
- };
1882
-
1883
- function RadioGroupItem(props) {
1884
- var input = props.input,
1885
- option = props.option,
1886
- onChange = props.onChange,
1887
- inputProps = props.inputProps;
1888
- var onChangeField = React.useCallback(function (event) {
1889
- if (event.target.checked) {
1890
- onChange(option.value);
1891
- }
1892
- }, []);
1893
- return /*#__PURE__*/React__default.default.createElement(RadioButton.RadioButton, Object.assign({
1894
- className: "form-radio__item",
1895
- checked: option.value === input.value,
1896
- name: input.name,
1897
- type: "radio",
1898
- value: option.value,
1899
- onBlur: input.onBlur,
1900
- onChange: onChangeField,
1901
- onFocus: input.onFocus,
1902
- label: option.label
1903
- }, inputProps));
1904
- }
1905
- RadioGroupItem.propTypes = {
1906
- inputProps: PropTypes__default.default.object,
1907
- onChange: PropTypes__default.default.func,
1908
- option: PropTypes__default.default.shape({
1909
- label: PropTypes__default.default.string,
1910
- value: PropTypes__default.default.string
1911
- }),
1912
- input: PropTypes__default.default.shape({
1913
- name: PropTypes__default.default.string,
1914
- value: PropTypes__default.default.string,
1915
- onBlur: PropTypes__default.default.func,
1916
- onFocus: PropTypes__default.default.func,
1917
- onChange: PropTypes__default.default.func
1918
- })
1919
- };
1920
-
1921
- function RadioGroupInput(props) {
1922
- var input = props.input,
1923
- value = props.value,
1924
- onChange = props.onChange;
1925
- var onChangeField = React.useCallback(function (event) {
1926
- return onChange(event.target.value);
1927
- }, [onChange]);
1928
- return /*#__PURE__*/React__default.default.createElement(Input.Input, Object.assign({
1929
- autoComplete: "nope",
1930
- name: input.name,
1931
- onBlur: input.onBlur,
1932
- onChange: onChangeField,
1933
- onFocus: input.onFocus,
1934
- value: value
1935
- }, props));
1936
- }
1937
- RadioGroupInput.propTypes = {
1938
- input: PropTypes__default.default.string,
1939
- value: PropTypes__default.default.string,
1940
- editableProps: PropTypes__default.default.object,
1941
- onChange: PropTypes__default.default.func
1942
- };
1943
-
1944
- function RadioGroupList(props) {
1945
- var input = props.input,
1946
- options = props.options,
1947
- editableProps = props.editableProps,
1948
- onChange = props.onChange,
1949
- inputProps = props.inputProps;
1950
- var _useState = React.useState(function () {
1951
- var isRadioValue = options.find(function (option) {
1952
- return option.value === input.value;
1953
- });
1954
- if (!isRadioValue) {
1955
- return input.value;
1956
- }
1957
- return '';
1958
- }),
1959
- editableValue = _useState[0],
1960
- setEditableValue = _useState[1];
1961
- React.useEffect(function () {
1962
- // When a new value from outside enters the form
1963
- if (input.value) {
1964
- // Check value for radio type
1965
- var isRadioValue = options.find(function (option) {
1966
- return option.value === input.value && !option.editable;
1967
- });
1968
- // If new value not in radio list - set to editable input
1969
- setEditableValue(isRadioValue ? '' : input.value);
1970
- } else {
1971
- // If new value is empty - clear editable input
1972
- setEditableValue('');
1973
- }
1974
- }, [input.value]);
1975
-
1976
- // Callback for value changes
1977
- var onChangeSomeInput = React.useCallback(function (value) {
1978
- // Save to form values
1979
- input.onChange(value);
1980
- if (onChange) {
1981
- // Pass to custom event
1982
- onChange(value, input.name);
1983
- }
1984
- }, [input, onChange]);
1985
-
1986
- // Handle for radio inputs
1987
- var onChangeRadio = React.useCallback(function (value) {
1988
- setEditableValue('');
1989
- onChangeSomeInput(value);
1990
- }, [onChangeSomeInput]);
1991
-
1992
- // Handle for text input
1993
- var onChangeEditable = React.useCallback(function (value) {
1994
- setEditableValue(value);
1995
- onChangeSomeInput(value);
1996
- }, [onChangeSomeInput]);
1997
- return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, options.map(function (option) {
1998
- return option.editable ? /*#__PURE__*/React__default.default.createElement(RadioGroupInput, {
1999
- key: option.label,
2000
- input: input,
2001
- value: editableValue,
2002
- option: option,
2003
- onChange: onChangeEditable,
2004
- editableProps: editableProps,
2005
- inputProps: inputProps
2006
- }) : /*#__PURE__*/React__default.default.createElement(RadioGroupItem, {
2007
- key: option.value,
2008
- input: input,
2009
- option: option,
2010
- onChange: onChangeRadio,
2011
- inputProps: inputProps
2012
- });
2013
- }));
2014
- }
2015
- RadioGroupList.propTypes = {
2016
- editableProps: PropTypes__default.default.object,
2017
- input: PropTypes__default.default.object,
2018
- inputProps: PropTypes__default.default.object,
2019
- onChange: PropTypes__default.default.object,
2020
- options: PropTypes__default.default.object
2021
- };
2022
-
2023
- var RadioGroup = /*#__PURE__*/React__default.default.memo(function RadioGroup(props) {
2024
- var isRequired = props.isRequired,
2025
- name = props.name,
2026
- options = props.options,
2027
- fieldProps = props.fieldProps,
2028
- editableProps = props.editableProps,
2029
- inputProps = props.inputProps,
2030
- onChange = props.onChange,
2031
- hideMessage = props.hideMessage;
2032
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
2033
- name: name
2034
- }, function (_ref) {
2035
- var input = _ref.input,
2036
- meta = _ref.meta;
2037
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2038
- className: "form__item_type_radio",
2039
- fieldClassName: 'form-radio',
2040
- inputName: input.name,
2041
- inputValue: input.value || '',
2042
- isRequired: isRequired,
2043
- metaActive: meta.active,
2044
- metaError: meta.error,
2045
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
2046
- metaSubmitError: meta.submitError,
2047
- metaSubmitFailed: meta.submitFailed,
2048
- metaTouched: meta.touched,
2049
- metaValid: meta.valid,
2050
- hideMessage: hideMessage
2051
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(RadioGroupList, {
2052
- input: input,
2053
- options: options,
2054
- onChange: onChange,
2055
- editableProps: editableProps,
2056
- inputProps: inputProps
2057
- }));
2058
- });
2059
- });
2060
- RadioGroup.defaultProps = {
2061
- fieldProps: {},
2062
- editableProps: {},
2063
- inputProps: {},
2064
- options: []
2065
- };
2066
- RadioGroup.propTypes = {
2067
- name: PropTypes__default.default.string.isRequired,
2068
- fieldProps: PropTypes__default.default.object,
2069
- inputProps: PropTypes__default.default.object,
2070
- editableProps: PropTypes__default.default.object,
2071
- isRequired: PropTypes__default.default.bool,
2072
- options: PropTypes__default.default.array,
2073
- onChange: PropTypes__default.default.func
2074
- };
2075
-
2076
- // const SegmentedField = React.memo(
2077
- function SegmentedField(props) {
2078
- var options = props.options,
2079
- isRequired = props.isRequired,
2080
- name = props.name,
2081
- fieldProps = props.fieldProps,
2082
- inputProps = props.inputProps,
2083
- hideMessage = props.hideMessage;
2084
- var _useForm = reactFinalForm.useForm(),
2085
- change = _useForm.change;
2086
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
2087
- name: name
2088
- }, function (_ref) {
2089
- var input = _ref.input,
2090
- meta = _ref.meta;
2091
- var activeOption = React.useMemo(function () {
2092
- var emptyOption = {
2093
- value: null,
2094
- label: null
2095
- };
2096
- if (input.value) {
2097
- var currentOption = options.find(function (option) {
2098
- return option.value === input.value;
2099
- });
2100
- return currentOption || emptyOption;
2101
- }
2102
- return emptyOption;
2103
- }, [input.value]);
2104
- var setActiveSegment = React.useCallback(function (option) {
2105
- change(name, option.value);
2106
- }, [change]);
2107
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2108
- className: clsx__default.default('form-field_type_segmented', 'form__item_type_segmented'),
2109
- fieldClassName: "form-segmented",
2110
- inputName: input.name,
2111
- inputValue: input.value || [],
2112
- isRequired: isRequired,
2113
- metaActive: meta.active,
2114
- metaError: meta.error,
2115
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
2116
- metaSubmitError: meta.submitError,
2117
- metaSubmitFailed: meta.submitFailed,
2118
- metaTouched: meta.touched,
2119
- metaValid: meta.valid,
2120
- hideMessage: hideMessage
2121
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Segmented.Segmented, Object.assign({
2122
- segments: options,
2123
- setActiveSegment: setActiveSegment,
2124
- activeSegment: activeOption
2125
- }, inputProps)));
2126
- });
2127
- }
2128
- // )
2129
-
2130
- SegmentedField.propTypes = {
2131
- options: PropTypes__default.default.array.isRequired,
2132
- name: PropTypes__default.default.string.isRequired,
2133
- className: PropTypes__default.default.string,
2134
- inputClass: PropTypes__default.default.string,
2135
- isRequired: PropTypes__default.default.bool,
2136
- label: PropTypes__default.default.string,
2137
- placeholder: PropTypes__default.default.string,
2138
- fieldProps: PropTypes__default.default.object,
2139
- inputProps: PropTypes__default.default.object
2140
- };
2141
-
2142
- function getDefaultValue(options, selectValue) {
2143
- var selectValues = Array.isArray(selectValue) ? selectValue : [selectValue];
2144
- var result = [];
2145
- options.forEach(function (item) {
2146
- var isValue = selectValues.includes(item.value);
2147
- var isLabel = selectValues.includes(item.label);
2148
- var childOptions = [];
2149
- if (item.options) {
2150
- childOptions = getDefaultValue(item.options, selectValue);
2151
- }
2152
- if (isValue || isLabel) {
2153
- result.push(item);
2154
- } else if (childOptions.length) {
2155
- result = result.concat(childOptions);
2156
- }
2157
- });
2158
- return result;
2159
- }
2160
- var SelectField = /*#__PURE__*/React__default.default.memo(function SelectField(props) {
2161
- var isRequired = props.isRequired,
2162
- key = props.key,
2163
- name = props.name,
2164
- options = props.options,
2165
- fieldProps = props.fieldProps,
2166
- selectProps = props.selectProps,
2167
- selectRef = props.selectRef,
2168
- onChange = props.onChange,
2169
- classNameGroupItem = props.classNameGroupItem,
2170
- hideMessage = props.hideMessage;
2171
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
2172
- name: name
2173
- }, function (_ref) {
2174
- var input = _ref.input,
2175
- meta = _ref.meta;
2176
- var onChangeField = React.useCallback(function (value) {
2177
- input.onChange(value);
2178
- if (onChange) {
2179
- onChange(value, input.name);
2180
- }
2181
- }, [onChange]);
2182
- var _useState = React.useState(null),
2183
- selectedOptions = _useState[0],
2184
- setSelectedOptions = _useState[1];
2185
- var defaultValue = React.useMemo(function () {
2186
- var _input$value;
2187
- var optionsValues = getDefaultValue(options, input.value);
2188
- if (!optionsValues.length && (_input$value = input.value) != null && _input$value.length) {
2189
- optionsValues.push({
2190
- value: input.value,
2191
- label: input.value
2192
- });
2193
- }
2194
- return optionsValues;
2195
- }, [input.value]);
2196
- React.useEffect(function () {
2197
- return setSelectedOptions(defaultValue);
2198
- }, [defaultValue]);
2199
- var onChangeValue = React.useCallback(function (option, actionMeta) {
2200
- var value = Array.isArray(option) ? option.map(function (o) {
2201
- return o.value;
2202
- }) : (option == null ? void 0 : option.value) || null;
2203
- setSelectedOptions(option);
2204
- onChangeField(value);
2205
- }, [onChangeField]);
2206
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2207
- className: clsx__default.default('form-field_type_select', 'form__item_type_select', classNameGroupItem),
2208
- fieldClassName: 'form-select',
2209
- inputName: input.name,
2210
- inputValue: input.value,
2211
- isRequired: isRequired,
2212
- metaActive: meta.active,
2213
- metaError: meta.error,
2214
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
2215
- metaSubmitError: meta.submitError,
2216
- metaSubmitFailed: meta.submitFailed,
2217
- metaTouched: meta.touched,
2218
- metaValid: meta.valid,
2219
- hideMessage: hideMessage
2220
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Select.Select, Object.assign({
2221
- className: "form-select-item",
2222
- instanceId: "id_" + input.name,
2223
- value: selectedOptions,
2224
- onChange: onChangeValue,
2225
- options: options,
2226
- ref: selectRef,
2227
- key: key
2228
- }, selectProps)));
2229
- });
2230
- });
2231
- SelectField.propTypes = {
2232
- name: PropTypes__default.default.string.isRequired,
2233
- selectProps: PropTypes__default.default.object,
2234
- isRequired: PropTypes__default.default.bool,
2235
- label: PropTypes__default.default.any,
2236
- messageType: PropTypes__default.default.string,
2237
- options: PropTypes__default.default.array,
2238
- onChange: PropTypes__default.default.func
2239
- };
2240
-
2241
- var SwitchField = /*#__PURE__*/React__default.default.memo(function SwitchField(props) {
2242
- var name = props.name,
2243
- isRequired = props.isRequired,
2244
- onChange = props.onChange,
2245
- fieldProps = props.fieldProps,
2246
- inputProps = props.inputProps,
2247
- classNameGroupItem = props.classNameGroupItem,
2248
- hideMessage = props.hideMessage;
2249
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
2250
- name: name,
2251
- type: "checkbox"
2252
- }, function (_ref) {
2253
- var input = _ref.input,
2254
- meta = _ref.meta;
2255
- var onChangeField = React.useCallback(function (event) {
2256
- input.onChange(event);
2257
- if (onChange) {
2258
- onChange(event.target.checked, input.name);
2259
- }
2260
- }, [onChange]);
2261
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2262
- className: clsx__default.default('form-field_type_switch', 'form__item_type_switch', classNameGroupItem),
2263
- fieldClassName: "form-switch",
2264
- inputName: input.name,
2265
- inputValue: input.checked,
2266
- isRequired: isRequired,
2267
- metaActive: meta.active,
2268
- metaError: meta.error,
2269
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
2270
- metaSubmitError: meta.submitError,
2271
- metaSubmitFailed: meta.submitFailed,
2272
- metaTouched: meta.touched,
2273
- metaValid: meta.valid,
2274
- hideMessage: hideMessage,
2275
- tag: "label"
2276
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Switch.Switch, Object.assign({
2277
- autoComplete: "nope",
2278
- checked: input.checked,
2279
- name: input.name,
2280
- type: "checkbox",
2281
- onBlur: input.onBlur,
2282
- onChange: onChangeField,
2283
- onFocus: input.onFocus
2284
- }, inputProps)));
2285
- });
2286
- });
2287
- SwitchField.defaultProps = {
2288
- inputProps: {},
2289
- fieldProps: {}
2290
- };
2291
- SwitchField.propTypes = {
2292
- fieldProps: PropTypes__default.default.object,
2293
- inputProps: PropTypes__default.default.object,
2294
- isRequired: PropTypes__default.default.bool,
2295
- name: PropTypes__default.default.string,
2296
- onChange: PropTypes__default.default.func
2297
- };
2298
-
2299
- var TextareaField = /*#__PURE__*/React__default.default.memo(function TextareaField(props) {
2300
- var isRequired = props.isRequired,
2301
- name = props.name,
2302
- fieldProps = props.fieldProps,
2303
- inputProps = props.inputProps,
2304
- classNameGroupItem = props.classNameGroupItem,
2305
- hideMessage = props.hideMessage;
2306
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
2307
- name: name
2308
- }, function (_ref) {
2309
- var input = _ref.input,
2310
- meta = _ref.meta;
2311
- return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
2312
- className: clsx__default.default('form-field_type_textarea', 'form__item_type_textarea', classNameGroupItem),
2313
- fieldClassName: 'form-textarea',
2314
- inputName: input.name,
2315
- inputValue: input.value,
2316
- isRequired: isRequired,
2317
- metaActive: meta.active,
2318
- metaError: meta.error,
2319
- metaModifiedSinceLastSubmit: meta.modifiedSinceLastSubmit,
2320
- metaSubmitError: meta.submitError,
2321
- metaSubmitFailed: meta.submitFailed,
2322
- metaTouched: meta.touched,
2323
- metaValid: meta.valid,
2324
- hideMessage: hideMessage
2325
- }, fieldProps), /*#__PURE__*/React__default.default.createElement(Textarea.Textarea, Object.assign({
2326
- autoComplete: "nope",
2327
- name: input.name,
2328
- value: input.value,
2329
- onBlur: input.onBlur,
2330
- onChange: input.onChange,
2331
- onFocus: input.onFocus
2332
- }, inputProps)));
2333
- });
2334
- });
2335
- TextareaField.defaultProps = {
2336
- inputProps: {},
2337
- fieldProps: {}
2338
- };
2339
- TextareaField.propTypes = {
2340
- name: PropTypes__default.default.string.isRequired,
2341
- isRequired: PropTypes__default.default.bool,
2342
- fieldProps: PropTypes__default.default.object,
2343
- inputProps: PropTypes__default.default.object
2344
- };
2345
-
2346
- var focusOnError = function focusOnError(formElementsList, errors) {
2347
- var selectsIds = Object.keys(errors).map(function (fieldName) {
2348
- if (fieldName === finalForm.FORM_ERROR) {
2349
- // TODO: get from somewhere
2350
- return 'notification__item_status_error';
2351
- }
2352
- return "react-select-id_" + fieldName + "-input";
2353
- });
2354
- var errorFieldElement = formElementsList.find(function (element) {
2355
- if (element.name) {
2356
- return finalForm.getIn(errors, element.name);
2357
- } else {
2358
- return selectsIds.includes(element.id);
2359
- }
2360
- });
2361
- var errorsList = Object.keys(errors);
2362
- if (!errorFieldElement && errorsList.length) {
2363
- var errorElement;
2364
- try {
2365
- var fieldName = errorsList[0];
2366
- if (fieldName === finalForm.FORM_ERROR) {
2367
- errorElement = document.querySelector('notification__item_status_error');
2368
- } else {
2369
- errorElement = document.querySelector("#" + fieldName + "-error");
2370
- if (!errorElement) {
2371
- errorElement = document.querySelector("#id_" + fieldName);
2372
- }
2373
- }
2374
- } catch (err) {
2375
- console.warn(err);
2376
- }
2377
- if (errorElement) {
2378
- errorElement.scrollIntoView({
2379
- block: 'center'
2380
- }); // , behavior: 'smooth'
2381
- }
2382
- }
2383
-
2384
- // the field is covered by the header because header is "sticky",
2385
- // that's we scroll manually so that the field falls into the center of the visible area
2386
- if (errorFieldElement) {
2387
- errorFieldElement.scrollIntoView({
2388
- block: 'center'
2389
- });
2390
- }
2391
- return null;
2392
- };
2393
- var focusOnErrorDecorator = createDecorator__default.default(null, focusOnError);
2394
- var setErrorsMutator = function setErrorsMutator(args, state) {
2395
- var fieldName = args[0],
2396
- data = args[1];
2397
- var submitError = data.submitError;
2398
- var fieldError = data.error;
2399
- if (fieldName === 'non_field_errors') {
2400
- // state.formState.invalid = true
2401
- // state.formState.valid = false
2402
- state.formState.error = fieldError;
2403
- state.formState.submitError = submitError;
2404
- } else if (fieldName in state.fields) {
2405
- if (fieldError) {
2406
- var _Object$assign;
2407
- var errorsState = Object.assign({}, state.formState.errors, (_Object$assign = {}, _Object$assign[fieldName] = fieldError, _Object$assign));
2408
- state.fields[fieldName].touched = true;
2409
- state.fields[fieldName].error = fieldError;
2410
- state.formState.errors = errorsState;
2411
- }
2412
- if (submitError) {
2413
- var _Object$assign2;
2414
- var submitErrorsState = Object.assign({}, state.formState.submitErrors, (_Object$assign2 = {}, _Object$assign2[fieldName] = submitError, _Object$assign2));
2415
-
2416
- // state.fields[fieldName].submitFailed = true
2417
- // state.fields[fieldName].submitSucceeded = false
2418
- state.fields[fieldName].submitError = submitError;
2419
- state.formState.submitErrors = submitErrorsState;
2420
- state.formState.submitFailed = true;
2421
- state.formState.submitSucceeded = false;
2422
- state.formState.lastSubmittedValues = state.formState.values;
2423
- }
2424
- }
2425
- };
2426
- var sendFormDataToServer = /*#__PURE__*/function () {
2427
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(url, data) {
2428
- var response, _error$response, _error$response2, formErrors;
2429
- return _regeneratorRuntime().wrap(function _callee$(_context) {
2430
- while (1) switch (_context.prev = _context.next) {
2431
- case 0:
2432
- _context.prev = 0;
2433
- _context.next = 3;
2434
- return axios__default.default({
2435
- url: url,
2436
- method: 'POST',
2437
- data: data
2438
- });
2439
- case 3:
2440
- response = _context.sent;
2441
- return _context.abrupt("return", {
2442
- success: true,
2443
- response: response
2444
- });
2445
- case 7:
2446
- _context.prev = 7;
2447
- _context.t0 = _context["catch"](0);
2448
- formErrors = {};
2449
- if (typeof ((_error$response = _context.t0.response) == null ? void 0 : _error$response.data) === 'string') {
2450
- formErrors[finalForm.FORM_ERROR] = 'Something went wrong';
2451
- }
2452
- if (typeof ((_error$response2 = _context.t0.response) == null ? void 0 : _error$response2.data) === 'object') {
2453
- Object.entries(_context.t0.response.data).forEach(function (_ref2) {
2454
- var fieldName = _ref2[0],
2455
- errorsList = _ref2[1];
2456
- formErrors[fieldName] = errorsList[0];
2457
- });
2458
- }
2459
- return _context.abrupt("return", {
2460
- success: false,
2461
- formErrors: formErrors,
2462
- error: _context.t0
2463
- });
2464
- case 13:
2465
- case "end":
2466
- return _context.stop();
2467
- }
2468
- }, _callee, null, [[0, 7]]);
2469
- }));
2470
- return function sendFormDataToServer(_x, _x2) {
2471
- return _ref.apply(this, arguments);
2472
- };
2473
- }();
2474
-
2475
- var formTypes = {
2476
- checkbox: 'checkbox',
2477
- custom: 'custom',
2478
- choice: 'choice',
2479
- code: 'code',
2480
- datePicker: 'datePicker',
2481
- dateRangePicker: 'dateRangePicker',
2482
- fileInput: 'fileInput',
2483
- group: 'group',
2484
- radioGroup: 'radioGroup',
2485
- segmented: 'segmented',
2486
- select: 'select',
2487
- "switch": 'switch',
2488
- text: 'text',
2489
- textarea: 'textarea'
2490
- };
2491
- function generateField(field, config, props) {
2492
- switch (field.type) {
2493
- case formTypes.checkbox:
2494
- {
2495
- return /*#__PURE__*/React__default.default.createElement(CheckboxField, Object.assign({
2496
- key: config.key
2497
- }, field, props));
2498
- }
2499
- case formTypes.choice:
2500
- {
2501
- return /*#__PURE__*/React__default.default.createElement(ChoiceField, Object.assign({
2502
- key: config.key
2503
- }, field, props));
2504
- }
2505
- case formTypes.code:
2506
- {
2507
- return /*#__PURE__*/React__default.default.createElement(CodeField, Object.assign({
2508
- key: config.key
2509
- }, field, props));
2510
- }
2511
- case formTypes["switch"]:
2512
- {
2513
- return /*#__PURE__*/React__default.default.createElement(SwitchField, Object.assign({
2514
- key: config.key
2515
- }, field, props));
2516
- }
2517
- case formTypes.segmented:
2518
- {
2519
- return /*#__PURE__*/React__default.default.createElement(SegmentedField, Object.assign({
2520
- key: config.key
2521
- }, field, props));
2522
- }
2523
- case formTypes.datePicker:
2524
- {
2525
- return /*#__PURE__*/React__default.default.createElement(DatePickerField, Object.assign({
2526
- key: config.key
2527
- }, field, props));
2528
- }
2529
- case formTypes.fileInput:
2530
- {
2531
- return /*#__PURE__*/React__default.default.createElement(FileInput, Object.assign({
2532
- key: config.key
2533
- }, field, props));
2534
- }
2535
- case formTypes.radioGroup:
2536
- {
2537
- return /*#__PURE__*/React__default.default.createElement(RadioGroup, Object.assign({
2538
- key: config.key
2539
- }, field, props));
2540
- }
2541
- case formTypes.select:
2542
- {
2543
- return /*#__PURE__*/React__default.default.createElement(SelectField, Object.assign({
2544
- key: config.key
2545
- }, field, props));
2546
- }
2547
- case formTypes.text:
2548
- {
2549
- return /*#__PURE__*/React__default.default.createElement(InputField, Object.assign({
2550
- key: config.key
2551
- }, field, props));
2552
- }
2553
- case formTypes.textarea:
2554
- {
2555
- return /*#__PURE__*/React__default.default.createElement(TextareaField, Object.assign({
2556
- key: config.key
2557
- }, field, props));
2558
- }
2559
- case formTypes.custom:
2560
- {
2561
- return /*#__PURE__*/React__default.default.createElement(CustomField, Object.assign({
2562
- key: config.key
2563
- }, field, props));
2564
- }
2565
- case formTypes.group:
2566
- {
2567
- return /*#__PURE__*/React__default.default.createElement(Group, Object.assign({
2568
- key: config.key
2569
- }, field, props), Object.entries(field.group).map(function (_ref) {
2570
- var key = _ref[0],
2571
- value = _ref[1];
2572
- var groupProps = Object.assign({}, value, {
2573
- hideMessage: field.hideMessage,
2574
- classNameGroupItem: value.classNameGroupItem || 'form__group-item'
2575
- });
2576
- return generateField(groupProps, {
2577
- key: key + '_form_group'
2578
- }, props);
2579
- }));
2580
- }
2581
- }
2582
- }
2583
-
2584
- var FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalForm(props, ref) {
2585
- var additionalProps = props.additionalProps,
2586
- after = props.after,
2587
- before = props.before,
2588
- buttonDirection = props.buttonDirection,
2589
- buttonGap = props.buttonGap,
2590
- buttonPadding = props.buttonPadding,
2591
- groupGap = props.groupGap,
2592
- className = props.className,
2593
- config = props.config,
2594
- description = props.description,
2595
- descriptionSize = props.descriptionSize,
2596
- descriptionTextColor = props.descriptionTextColor,
2597
- descriptionTextWeight = props.descriptionTextWeight,
2598
- disableFieldsAutoComplete = props.disableFieldsAutoComplete,
2599
- fieldsGap = props.fieldsGap,
2600
- formName = props.formName,
2601
- initialValues = props.initialValues,
2602
- initialValuesEqual = props.initialValuesEqual,
2603
- isLoading = props.isLoading,
2604
- loader = props.loader,
2605
- loaderSet = props.loaderSet,
2606
- loaderFill = props.loaderFill,
2607
- loaderItemFill = props.loaderItemFill,
2608
- loaderText = props.loaderText,
2609
- language = props.language,
2610
- mutators = props.mutators,
2611
- onChangeFormValues = props.onChangeFormValues,
2612
- onClickSecondaryButton = props.onClickSecondaryButton,
2613
- onClickTertiaryButton = props.onClickTertiaryButton,
2614
- onSubmit = props.onSubmit,
2615
- primaryButton = props.primaryButton,
2616
- primaryButtonLabel = props.primaryButtonLabel,
2617
- secondaryButton = props.secondaryButton,
2618
- secondaryButtonLabel = props.secondaryButtonLabel,
2619
- primaryButtonFill = props.primaryButtonFill,
2620
- primaryButtonFillHover = props.primaryButtonFillHover,
2621
- secondaryButtonFill = props.secondaryButtonFill,
2622
- secondaryButtonFillHover = props.secondaryButtonFillHover,
2623
- primaryButtonSize = props.primaryButtonSize,
2624
- primaryButtonLabelTextColor = props.primaryButtonLabelTextColor,
2625
- primaryButtonLabelSize = props.primaryButtonLabelSize,
2626
- primaryButtonLabelTextWeight = props.primaryButtonLabelTextWeight,
2627
- secondaryButtonSize = props.secondaryButtonSize,
2628
- secondaryButtonLabelTextColor = props.secondaryButtonLabelTextColor,
2629
- secondaryButtonLabelSize = props.secondaryButtonLabelSize,
2630
- secondaryButtonLabelTextWeight = props.secondaryButtonLabelTextWeight,
2631
- tertiaryButton = props.tertiaryButton,
2632
- tertiaryButtonFill = props.tertiaryButtonFill,
2633
- tertiaryButtonFillHover = props.tertiaryButtonFillHover,
2634
- tertiaryButtonSize = props.tertiaryButtonSize,
2635
- tertiaryButtonLabelTextColor = props.tertiaryButtonLabelTextColor,
2636
- tertiaryButtonLabelSize = props.tertiaryButtonLabelSize,
2637
- tertiaryButtonLabelTextWeight = props.tertiaryButtonLabelTextWeight,
2638
- tertiaryButtonLabel = props.tertiaryButtonLabel,
2639
- set = props.set,
2640
- type = props.type,
2641
- buttonJustifyContent = props.buttonJustifyContent,
2642
- title = props.title,
2643
- notificationType = props.notificationType,
2644
- buttonFill = props.buttonFill,
2645
- titleTextSize = props.titleTextSize,
2646
- titleTextColor = props.titleTextColor,
2647
- titleTextWeight = props.titleTextWeight,
2648
- validationSchema = props.validationSchema,
2649
- dataTour = props.dataTour,
2650
- dataTourButtons = props.dataTourButtons,
2651
- dataTourPrimaryButton = props.dataTourPrimaryButton,
2652
- dataTourSecondaryButton = props.dataTourSecondaryButton,
2653
- dataTourTertiaryButton = props.dataTourTertiaryButton;
2654
- var validate = useYupValidationSchema(validationSchema, language);
2655
- var onRefFormInstance = React.useCallback(function (formInstance) {
2656
- if (ref) {
2657
- ref.current = formInstance;
2658
- }
2659
- }, [ref]);
2660
- var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
2661
- prefix: 'fill_',
2662
- propsKey: 'fill'
2663
- });
2664
- var directionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
2665
- prefix: 'direction_',
2666
- propsKey: 'direction'
2667
- });
2668
- var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
2669
- prefix: 'shape_',
2670
- propsKey: 'shape'
2671
- });
2672
- var elevationClass = useDeviceTargetClass.useDeviceTargetClass(props, {
2673
- prefix: 'elevation_',
2674
- propsKey: 'elevation'
2675
- });
2676
- var _useStyles = useStyles.useStyles(props),
2677
- formStyles = _useStyles.styles;
2678
- return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Form, {
2679
- decorators: [focusOnErrorDecorator],
2680
- initialValues: initialValues,
2681
- initialValuesEqual: initialValuesEqual,
2682
- mutators: mutators,
2683
- render: function render(_ref) {
2684
- var handleSubmit = _ref.handleSubmit,
2685
- submitError = _ref.submitError,
2686
- modifiedSinceLastSubmit = _ref.modifiedSinceLastSubmit,
2687
- form = _ref.form;
2688
- return /*#__PURE__*/React__default.default.createElement("form", {
2689
- style: formStyles,
2690
- className: clsx__default.default(className, 'form', set && "form_set_" + set, type && "form_type_" + type, directionClass, fillClass, shapeClass, elevationClass),
2691
- name: formName,
2692
- "data-tour": dataTour,
2693
- ref: function ref() {
2694
- return onRefFormInstance(form);
2695
- },
2696
- onSubmit: handleSubmit,
2697
- autoComplete: disableFieldsAutoComplete ? 'off' : undefined,
2698
- autoCorrect: disableFieldsAutoComplete ? 'off' : undefined,
2699
- autoCapitalize: disableFieldsAutoComplete ? 'off' : undefined,
2700
- spellCheck: disableFieldsAutoComplete ? 'false' : undefined
2701
- }, before, title && /*#__PURE__*/React__default.default.createElement(Title.Title, {
2702
- className: "form__title",
2703
- size: titleTextSize,
2704
- textColor: titleTextColor,
2705
- textWeight: titleTextWeight
2706
- }, title), description && /*#__PURE__*/React__default.default.createElement(Text.Text, {
2707
- className: "form__description",
2708
- size: descriptionSize,
2709
- textColor: descriptionTextColor,
2710
- textWeight: descriptionTextWeight
2711
- }, description), submitError && !modifiedSinceLastSubmit && /*#__PURE__*/React__default.default.createElement("div", {
2712
- className: clsx__default.default('notification', 'form-notification', notificationType ? "form-notification_type_" + notificationType : 'form-notification_type_global')
2713
- }, /*#__PURE__*/React__default.default.createElement(Notification.NotificationItem, {
2714
- className: "form-notification__item",
2715
- titleTextSize: "h6",
2716
- title: form.getState().submitError,
2717
- set: "form",
2718
- status: "error"
2719
- })), onChangeFormValues && /*#__PURE__*/React__default.default.createElement(reactFinalForm.FormSpy, {
2720
- subscription: {
2721
- values: true
2722
- },
2723
- onChange: onChangeFormValues
2724
- }), Boolean(Object.keys(config).length) && /*#__PURE__*/React__default.default.createElement(Group$1.Group, {
2725
- direction: "vertical",
2726
- gap: fieldsGap || groupGap,
2727
- className: "form__wrapper"
2728
- }, Object.keys(config).map(function (key) {
2729
- return generateField(config[key], {
2730
- key: key
2731
- }, additionalProps[config[key].name]);
2732
- }), isLoading && (loader || /*#__PURE__*/React__default.default.createElement(Loader.Loader, {
2733
- className: "form__loader",
2734
- set: loaderSet,
2735
- fill: loaderFill,
2736
- itemFill: loaderItemFill,
2737
- text: loaderText
2738
- }))), (primaryButtonLabel || primaryButton || secondaryButtonLabel || secondaryButton || tertiaryButton || tertiaryButtonLabel) && /*#__PURE__*/React__default.default.createElement(Group$1.Group, {
2739
- fill: buttonFill,
2740
- justifyContent: buttonJustifyContent,
2741
- direction: buttonDirection,
2742
- padding: buttonPadding,
2743
- gap: buttonGap,
2744
- className: "form__button",
2745
- dataTour: dataTourButtons
2746
- }, primaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
2747
- width: "fill",
2748
- className: "form__button-item",
2749
- fill: primaryButtonFill,
2750
- fillHover: primaryButtonFillHover,
2751
- size: primaryButtonSize,
2752
- labelTextColor: primaryButtonLabelTextColor,
2753
- labelSize: primaryButtonLabelSize,
2754
- labelTextWeight: primaryButtonLabelTextWeight,
2755
- label: primaryButtonLabel,
2756
- dataTour: dataTourPrimaryButton
2757
- }) : primaryButton, secondaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
2758
- width: "fill",
2759
- className: "form__button-item",
2760
- fill: secondaryButtonFill,
2761
- fillHover: secondaryButtonFillHover,
2762
- size: secondaryButtonSize,
2763
- labelTextColor: secondaryButtonLabelTextColor,
2764
- labelSize: secondaryButtonLabelSize,
2765
- labelTextWeight: secondaryButtonLabelTextWeight,
2766
- label: secondaryButtonLabel,
2767
- onClick: onClickSecondaryButton,
2768
- dataTour: dataTourSecondaryButton
2769
- }) : secondaryButton, tertiaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
2770
- width: "fill",
2771
- className: "form__button-item",
2772
- fill: tertiaryButtonFill,
2773
- fillHover: tertiaryButtonFillHover,
2774
- size: tertiaryButtonSize,
2775
- labelTextColor: tertiaryButtonLabelTextColor,
2776
- labelSize: tertiaryButtonLabelSize,
2777
- labelTextWeight: tertiaryButtonLabelTextWeight,
2778
- label: tertiaryButtonLabel,
2779
- onClick: onClickTertiaryButton,
2780
- dataTour: dataTourTertiaryButton
2781
- }) : tertiaryButton), after);
2782
- },
2783
- subscription: {
2784
- submitting: true,
2785
- pristine: true,
2786
- modifiedSinceLastSubmit: true,
2787
- submitError: true
2788
- },
2789
- validate: validate,
2790
- onSubmit: onSubmit
2791
- });
2792
- });
2793
- FinalForm.propTypes = {
2794
- additionalProps: PropTypes__default.default.object,
2795
- after: PropTypes__default.default.any,
2796
- before: PropTypes__default.default.any,
2797
- buttonGap: PropTypes__default.default.string,
2798
- className: PropTypes__default.default.string,
2799
- config: PropTypes__default.default.object,
2800
- description: PropTypes__default.default.string,
2801
- descriptionSize: PropTypes__default.default.string,
2802
- descriptionTextColor: PropTypes__default.default.string,
2803
- descriptionTextWeight: PropTypes__default.default.string,
2804
- disableFieldsAutoComplete: PropTypes__default.default.string,
2805
- fieldsGap: PropTypes__default.default.string,
2806
- formName: PropTypes__default.default.string,
2807
- initialValues: PropTypes__default.default.any,
2808
- initialValuesEqual: PropTypes__default.default.any,
2809
- language: PropTypes__default.default.string,
2810
- isLoading: PropTypes__default.default.bool,
2811
- loaderText: PropTypes__default.default.string,
2812
- mutators: PropTypes__default.default.any,
2813
- onChangeFormValues: PropTypes__default.default.func,
2814
- onClickSecondaryButton: PropTypes__default.default.func,
2815
- onSubmit: PropTypes__default.default.func,
2816
- primaryButton: PropTypes__default.default.string,
2817
- primaryButtonFill: PropTypes__default.default.string,
2818
- primaryButtonLabel: PropTypes__default.default.string,
2819
- secondaryButton: PropTypes__default.default.string,
2820
- secondaryButtonFill: PropTypes__default.default.string,
2821
- secondaryButtonLabel: PropTypes__default.default.string,
2822
- set: PropTypes__default.default.string,
2823
- title: PropTypes__default.default.string,
2824
- titleSize: PropTypes__default.default.string,
2825
- titleTextColor: PropTypes__default.default.string,
2826
- titleTextWeight: PropTypes__default.default.string,
2827
- validationSchema: PropTypes__default.default.object
2828
- };
2829
- FinalForm.defaultProps = {
2830
- additionalProps: {},
2831
- isLoading: false,
2832
- loaderSet: 'simple',
2833
- loaderFill: 'surfacePrimary',
2834
- loaderItemFill: 'surfaceItemAccent',
2835
- language: 'en',
2836
- titleSize: 'h1',
2837
- buttonDirection: 'vertical',
2838
- direction: 'vertical',
2839
- disableFieldsAutoComplete: false
2840
- };
2841
-
2842
- Object.defineProperty(exports, 'Field', {
2843
- enumerable: true,
2844
- get: function () { return reactFinalForm.Field; }
2845
- });
2846
- Object.defineProperty(exports, 'useForm', {
2847
- enumerable: true,
2848
- get: function () { return reactFinalForm.useForm; }
2849
- });
2850
- Object.defineProperty(exports, 'useFormState', {
2851
- enumerable: true,
2852
- get: function () { return reactFinalForm.useFormState; }
2853
- });
2854
- exports.Checkbox = CheckboxField;
2855
- exports.ChoiceField = ChoiceField;
2856
- exports.CodeField = CodeField;
2857
- exports.CustomField = CustomField;
2858
- exports.DatePickerField = DatePickerField;
2859
- exports.FieldWrapper = FieldWrapper;
2860
- exports.FieldWrapperBase = FieldWrapperBase;
2861
- exports.FileInput = FileInput;
2862
- exports.FinalForm = FinalForm;
2863
- exports.Group = Group;
2864
- exports.InputField = InputField;
2865
- exports.RadioGroup = RadioGroup;
2866
- exports.SegmentedField = SegmentedField;
2867
- exports.SelectField = SelectField;
2868
- exports.Switch = SwitchField;
2869
- exports.Textarea = TextareaField;
2870
- exports.addRequiredFieldsParamToSchema = addRequiredFieldsParamToSchema;
2871
- exports.emailValidation = emailValidation;
2872
- exports.focusOnError = focusOnError;
2873
- exports.focusOnErrorDecorator = focusOnErrorDecorator;
2874
- exports.formTypes = formTypes;
2875
- exports.generateField = generateField;
2876
- exports.phoneValidation = phoneValidation;
2877
- exports.sendFormDataToServer = sendFormDataToServer;
2878
- exports.setErrorsMutator = setErrorsMutator;
2879
- exports.useYupValidationSchema = useYupValidationSchema;
1
+ "use strict";var e=require("libphonenumber-js"),t=require("react"),a=require("final-form"),r=require("react-final-form"),i=require("prop-types"),o=require("clsx"),l=require("@itcase/ui/components/Checkbox"),s=require("@itcase/ui/components/Divider"),n=require("@itcase/ui/components/Text"),u=require("@itcase/ui/hooks/useDeviceTargetClass"),d=require("@itcase/ui/hooks/useStyles"),m=require("@itcase/ui/components/Choice"),c=require("@itcase/ui/components/Code"),f=require("@itcase/ui/components/DatePicker"),p=require("axios"),b=require("react-dropzone"),g=require("file-selector"),h=require("lodash/castArray"),x=require("@itcase/common"),_=require("@itcase/ui/components/Loader"),T=require("@itcase/ui/components/Title"),v=require("@itcase/ui/components/Input"),y=require("@itcase/ui/components/Icon"),C=require("@itcase/ui/components/RadioButton"),S=require("@itcase/ui/components/Segmented"),E=require("@itcase/ui/components/Select"),F=require("@itcase/ui/components/Switch"),N=require("@itcase/ui/components/Textarea"),P=require("@itcase/ui/components/Button"),z=require("@itcase/ui/components/Group"),k=require("@itcase/ui/components/Notification"),R=require("final-form-focus");function q(e){return e&&e.__esModule?e:{default:e}}var j=q(t),B=q(i),M=q(o),W=q(p),O=q(h),D=q(R);const w=(e,t)=>a.setIn(e,t.path,t.message),L=Object.create(null);function V(e,a){const r=t.useMemo((()=>e&&(e=>async function(t){try{await e.validate(t,{abortEarly:!1})}catch(e){if(e.inner)return e.inner.reduce(w,L);console.warn("itcase-forms schema.validate error: An error not related to the form occurred during validation. Validation ignored.")}})(e)),[e,a]);return r}function I(e){const{after:a,afterItem:r,before:i,beforeItem:o,children:l,className:m,desc:c,descTextSize:f,descTextColor:p,descTextWidth:b,divider:g,dividerDirection:h,dividerFill:x,dividerSize:_,dividerWidth:T,fieldClassName:v,id:y,inputName:C,inputValue:S,isRequired:E,label:F,labelTextSize:N,labelTextColor:P,labelTextWidth:z,errorMessageTextSize:k,errorMessageTextWeight:R,errorMessageTextColor:q,message:B,messageTextSize:W,messageTextColor:O,messageTextWeight:D,metaActive:w,metaError:L,metaModifiedSinceLastSubmit:V,metaSubmitError:I,metaSubmitFailed:A,metaTouched:$,metaValid:H,set:G,type:K,hideMessage:U,isHidden:J,tag:Y,dataTour:Q,showErrorsOnSubmit:X}=e,Z=L||!V&&I||!1,ee=t.useMemo((()=>X?A&&$&&Z:$&&Z),[X,A,$,Z]),te=t.useMemo((()=>(Array.isArray(S)?S.length:S)&&(H||!L&&I&&V)),[S,H,L,I,V]),ae=t.useMemo((()=>M.default(m,ee&&"form__item_state_error",te&&"form__item_state_success",E&&"form__item_state_required",w&&"form__item_state_focus",S&&"form__item_state_filled")),[m,ee,te,E,w,S]),re=t.useMemo((()=>M.default(v,ee&&`${v}_state_error`,te&&`${v}_state_success`,w&&`${v}_state_focus`,S&&`${v}_state_filled`)),[v,ee,te,w,S]),ie=u.useDeviceTargetClass(e,{prefix:"form-field_size_",propsKey:"size"}),oe=u.useDeviceTargetClass(e,{prefix:"fill_",propsKey:"fill"}),le=u.useDeviceTargetClass(e,{prefix:"fill_",propsKey:"inputFill"}),se=u.useDeviceTargetClass(e,{prefix:"form-field_shape_",propsKey:"shape"}),ne=u.useDeviceTargetClass(e,{prefix:"form-field__item-value_shape_",propsKey:"inputShape"}),ue=u.useDeviceTargetClass(e,{prefix:"direction_",propsKey:"direction"}),de=u.useDeviceTargetClass(e,{prefix:"width_",propsKey:"width"}),{styles:me}=d.useStyles(e);return j.default.createElement(Y,{className:M.default(ae,"form__item","form-field",K&&`form-field_type_${K}`,G&&`form-field_set_${G}`,ie,oe,se,J&&"form-field_state_hidden",ue,de),"data-tour":Q,style:me},i,F&&j.default.createElement("div",{htmlFor:y,className:"form-field__label"},j.default.createElement(n.Text,{size:N,textWeight:z,textColor:P},F)),c&&j.default.createElement("div",{className:"form-field__desc"},j.default.createElement(n.Text,{size:f,textWeight:b,textColor:p},c)),j.default.createElement("div",{className:M.default("form-field__content",le,ne)},j.default.createElement("div",{className:M.default("form-field__content-inner",re)},o,l,r),g&&j.default.createElement(s.Divider,{className:"form-field__item-divider",width:T,direction:h,size:_,fill:x})),!U&&j.default.createElement("div",{className:"form-field__message"},Boolean(ee)&&j.default.createElement(n.Text,{className:"form-field__message-item form-field__message-item_type-error",size:k,textWeight:R,textColor:q,id:`${C}-error`},Z),Boolean(B)&&!ee&&j.default.createElement(n.Text,{className:"form-field__message-item form-field__message-item_type_message",size:W,textWeight:D,textColor:O},B),Boolean(!ee)&&Boolean(!B)&&j.default.createElement(n.Text,{className:"form-field__message-item form-field__message-item_type_message",size:W}," ")),a)}function A(e){const{inputName:a}=e,{change:i}=r.useForm();return t.useEffect((()=>()=>{i(a,void 0)}),[]),j.default.createElement(I,e)}I.defaultProps={tag:"div",type:"normal",errorMessageTextSize:"s",errorMessageTextColor:"errorTextSecondary"},I.propTypes={after:B.default.any,afterItem:B.default.any,autoComplete:B.default.string,before:B.default.any,beforeItem:B.default.any,children:B.default.any,className:B.default.string,desc:B.default.string,descTextSize:B.default.string,descTextColor:B.default.string,descTextWidth:B.default.string,dividerDirection:B.default.string,dividerFill:B.default.string,dividerSize:B.default.string,dividerWidth:B.default.string,fieldClassName:B.default.string,id:B.default.string,inputName:B.default.string,inputOnBlur:B.default.func,inputOnChange:B.default.func,inputOnFocus:B.default.func,inputValue:B.default.any,isRequired:B.default.bool,itemType:B.default.string,label:B.default.any,labelTextSize:B.default.string,labelTextColor:B.default.string,labelTextWidth:B.default.string,errorMessageTextSize:B.default.string,errorMessageTextWidth:B.default.string,errorMessageTextColor:B.default.string,message:B.default.string,messageSize:B.default.string,messageTextColor:B.default.string,messageTextWidth:B.default.string,metaActive:B.default.bool,metaError:B.default.string,metaModifiedSinceLastSubmit:B.default.bool,metaSubmitError:B.default.string,metaSubmitFailed:B.default.bool,metaTouched:B.default.bool,metaValid:B.default.bool,set:B.default.string,showErrorsOnSubmit:B.default.bool,type:B.default.string},A.propTypes={autoComplete:B.default.string,children:B.default.any,className:B.default.string,fieldClassName:B.default.string,hint:B.default.string,inputName:B.default.string,inputOnBlur:B.default.func,inputOnChange:B.default.func,inputOnFocus:B.default.func,inputValue:B.default.any,isRequired:B.default.bool,itemType:B.default.string,label:B.default.any,metaActive:B.default.bool,metaError:B.default.string,metaModifiedSinceLastSubmit:B.default.bool,metaSubmitError:B.default.string,metaSubmitFailed:B.default.bool,metaTouched:B.default.bool,metaValid:B.default.bool,showErrorsOnSubmit:B.default.bool};const $=j.default.memo((function(e){const{name:a,isRequired:i,onChange:o,fieldProps:s,inputProps:n,classNameGroupItem:u,hideMessage:d}=e;return j.default.createElement(r.Field,{name:a,type:"checkbox"},(({input:e,meta:a})=>{const r=t.useCallback((t=>{e.onChange(t),o&&o(t.target.checked,e.name)}),[o]);return j.default.createElement(A,Object.assign({className:M.default("form-field_type_checkbox","form__item_type_checkbox",u),fieldClassName:"form-checkbox",inputName:e.name,inputValue:e.checked,isRequired:i,metaActive:a.active,metaError:a.error,metaModifiedSinceLastSubmit:a.modifiedSinceLastSubmit,metaSubmitError:a.submitError,metaSubmitFailed:a.submitFailed,metaTouched:a.touched,metaValid:a.valid,tag:"label",hideMessage:d},s),j.default.createElement(l.Checkbox,Object.assign({autoComplete:"nope",checked:e.checked,name:e.name,type:"checkbox",onBlur:e.onBlur,onChange:r,onFocus:e.onFocus},n)))}))}));$.defaultProps={inputProps:{},fieldProps:{}},$.propTypes={fieldProps:B.default.object,inputProps:B.default.object,isRequired:B.default.bool,name:B.default.string,onChange:B.default.func};const H=j.default.memo((function(e){const{options:a,classNameGroupItem:i,fieldProps:o,inputProps:l,isMultiple:s,isRequired:n,initialValue:u,label:d,name:c,messageType:f,hideMessage:p,placeholder:b}=e,{change:g}=r.useForm();return j.default.createElement(r.Field,{name:c,initialValue:u},(({input:e,meta:r})=>{const u=t.useMemo((()=>{const t={value:null,label:null};if(e.value){return a.find((t=>t.value===e.value))||t}return t}),[e.value]),h=t.useCallback((e=>{g(c,e.value)}),[g]);return j.default.createElement(A,Object.assign({className:M.default("form-field_type_choice","form__item_type_choice",i),fieldClassName:"form-choice",inputName:e.name,inputValue:e.value||[],isRequired:n,label:d,messageType:f,metaActive:r.active,metaError:r.error,metaModifiedSinceLastSubmit:r.modifiedSinceLastSubmit,metaSubmitError:r.submitError,metaSubmitFailed:r.submitFailed,metaTouched:r.touched,metaValid:r.valid,hideMessage:p},o),j.default.createElement(m.Choice,Object.assign({className:M.default(r.active&&"form-choice_state_focus",r.error&&r.touched&&"form-choice_state_error"),options:a,inputName:e.name,inputValue:e.value||[],isMultiple:s,isRequired:n,placeholder:b,active:u,setActiveSegment:h},l)))}))}));H.propTypes={options:B.default.array.isRequired,name:B.default.string.isRequired,className:B.default.string,inputClass:B.default.string,isMultiple:B.default.bool,isRequired:B.default.bool,label:B.default.string,placeholder:B.default.string};const G=j.default.memo((function(e){const{Component:t,isRequired:a,name:i,fieldProps:o,classNameGroupItem:l,hideMessage:s}=e;return j.default.createElement(r.Field,{name:i},(({input:r,meta:i})=>j.default.createElement(A,Object.assign({className:M.default("form-field_type_custom","form__item_type_custom",l),fieldClassName:"form-custom",inputName:r.name,inputValue:r.value,isRequired:a,metaActive:i.active,metaError:i.error,metaModifiedSinceLastSubmit:i.modifiedSinceLastSubmit,metaSubmitError:i.submitError,metaSubmitFailed:i.submitFailed,metaTouched:i.touched,metaValid:i.valid,hideMessage:s},o),j.default.createElement(t,Object.assign({},e,{input:r,meta:i})))))}));G.defaultProps={inputProps:{},fieldProps:{}},G.propTypes={name:B.default.string.isRequired,isRequired:B.default.bool,fieldProps:B.default.object,inputProps:B.default.object};const K=j.default.memo((function(e){const{isRequired:t,name:a,fieldProps:i,inputProps:o,classNameGroupItem:l,hideMessage:s}=e;return j.default.createElement(r.Field,{name:a},(({input:e,meta:a})=>j.default.createElement(A,Object.assign({className:M.default("form-field_type_code","form__item_type_code",l),fieldClassName:"form-code",inputName:e.name,inputValue:e.value,isRequired:t,metaActive:a.active,metaError:a.error,metaModifiedSinceLastSubmit:a.modifiedSinceLastSubmit,metaSubmitError:a.submitError,metaSubmitFailed:a.submitFailed,metaTouched:a.touched,metaValid:a.valid,hideMessage:s},i),j.default.createElement(c.Code,Object.assign({autoComplete:"nope",name:e.name,value:e.value,onBlur:e.onBlur,onChange:e.onChange,onFocus:e.onFocus},o)))))}));function U(e){const{isRequired:a,fieldProps:i,inputProps:o,datePickerProps:l,name:s,iconSize:n,iconBorder:u,iconBorderHover:d,iconFill:m,iconFillHover:c,iconRevealableShow:p,iconRevealableHide:b,iconShape:g,hideMessage:h,onChange:x,classNameGroupItem:_}=e;return j.default.createElement(r.Field,{name:s},(({input:e,meta:r})=>{const s=t.useCallback((t=>{e.onChange(t),x&&x(t,e.name)}),[x]);return j.default.createElement(A,Object.assign({className:M.default("form-field_type_datepicker","form__item_type_datepicker",_),fieldClassName:"form-datepicker",inputName:e.name,inputValue:e.value||"",isRequired:a,metaActive:r.active,metaError:r.error,metaModifiedSinceLastSubmit:r.modifiedSinceLastSubmit,metaSubmitError:r.submitError,metaSubmitFailed:r.submitFailed,metaTouched:r.touched,metaValid:r.valid,hideMessage:h},i),j.default.createElement(f.DatePickerInput,{name:e.name,value:e.value||"",onBlur:e.onBlur,onChange:s,onFocus:e.onFocus,inputProps:o,datePickerProps:l}))}))}async function J(e){try{const t=await W.default({url:`/api/${e}/`,responseType:"blob"}),a=t.data,r=t.headers["content-disposition"]?.split("filename=")[1];let i=r?.substring(1).slice(0,-1);if(!i){const e=a.type.split("/"),t=e[e.length-1];i=`${(new Date).getTime()}.${t}`}return new File([a],i,{type:a.type})}catch(e){return console.log("error: ",e),null}}function Y(e,t){t=t||(()=>{});const a=new FileReader;a._readedFile=e,a.onabort=()=>t(),a.onerror=()=>t(),a.onload=e=>{e.target._readedFile.dataURL=a.result,t()},e instanceof File?a.readAsDataURL(e):t()}K.defaultProps={inputProps:{},fieldProps:{}},K.propTypes={name:B.default.string.isRequired,isRequired:B.default.bool,fieldProps:B.default.object,inputProps:B.default.object},U.defaultProps={inputProps:{},fieldProps:{}},U.propTypes={fieldProps:B.default.object,inputProps:B.default.object,isRequired:B.default.bool,name:B.default.string.isRequired,onChange:B.default.func};const Q=j.default.memo((function(e){const{inputName:a,size:i,className:o,fileErrorText:l,hintTitleTextSize:s,removeThumbTextSize:d,removeThumbTextColor:m,removeThumbTextWeight:c,thumbNameTextSize:f,thumbNameTextColor:p,removeThumbTextHoverColor:h,thumbNameTextWrap:T,thumbNameTextWeight:v,hintTitleTextColor:y,hintTitleTextWrap:C,thumbColumn:S,hintTitleTextWeight:E,hintDescriptionTextSize:F,hintDescriptionTextColor:N,hintDescriptionTextWrap:P,hintDescriptionTextWeight:z,errorMessageTextSize:k,errorMessageTextWeight:R,errorMessageTextColor:q,inputValue:B,maxFiles:W,maxSize:D,removeThumbText:w,hintTitle:L,hintDescription:V,isShowFilename:I,isPreviews:A,loadingText:$,dropzoneProps:H={},onAddFiles:G,onDeleteFile:K}=e,[U,Q]=t.useState(""),[X,Z]=t.useState(!1),[ee,te]=t.useState(B?O.default(B):[]),{change:ae}=r.useForm(),re=t.useCallback((e=>{const t=1==H.maxFiles?e[0]:e;return ae(a,t),t}),[H,ae]),{getRootProps:ie,getInputProps:oe}=b.useDropzone({maxSize:D||10485760,maxFiles:W||5,...H,getFilesFromEvent:async e=>{const t=(await g.fromEvent(e)).filter((e=>e instanceof File));return[...ee,...t]},onDropAccepted:(e,t)=>{A&&e.forEach((e=>{e.error||(e.preview=URL.createObjectURL(e))})),te(e),Q("");const r=e.map((e=>new Promise((t=>Y(e,t)))));Promise.all(r).then((()=>{const t=re(e);G&&G(t,a)}))},onDropRejected:(e,t)=>{if(e.length){const t=e[0].errors[0]?.message;Q(t||"Error on adding file")}else Q("")}}),le=t.useCallback(((e,t)=>{e.stopPropagation(),e.preventDefault();const r=[...ee];r.splice(t,1),K&&K(ee[t],a),re(r)}),[ee,re,K]),se=t.useCallback((async e=>{Z(!0);const t=await async function(e,t){const a=[];for await(const r of O.default(e)){let e=null;const i="string"==typeof r&&r.includes("/");(r.image||i)&&(e=await J(r.image||r),e&&Y(e)),r.dataURL&&(e=x.createFileFromDataURL(r.name||r.path,r.dataURL),e.dataURL=r.dataURL),e&&(e.id=r.id,t&&(e.preview=URL.createObjectURL(e)),a.push(e))}return a}(e,A);return Z(!1),te(t),t}),[A]);t.useEffect((()=>{se(B).then((e=>re(e)))}),[]),t.useEffect((()=>{B?se(B):te([])}),[B]),t.useEffect((()=>()=>ee.forEach((e=>URL.revokeObjectURL(e?.preview)))),[]);const ne=u.useDeviceTargetClass(e,{prefix:"fill_",propsKey:"fill"}),ue=u.useDeviceTargetClass(e,{prefix:"fill_hover_",propsKey:"fillHover"}),de=u.useDeviceTargetClass(e,{prefix:"border-width_",propsKey:"borderWidth"}),me=u.useDeviceTargetClass(e,{prefix:"border-color_",propsKey:"borderColor"}),ce=u.useDeviceTargetClass(e,{prefix:"border-color_hover_",propsKey:"borderColorHover"}),fe=u.useDeviceTargetClass(e,{prefix:"border_type_",propsKey:"borderType"}),pe=u.useDeviceTargetClass(e,{prefix:"form-dropzone_shape_",propsKey:"shape"}),be=u.useDeviceTargetClass(e,{prefix:"border-width_",propsKey:"thumbBorderWidth"}),ge=u.useDeviceTargetClass(e,{prefix:"form-dropzone__thumb_direction_",propsKey:"thumbDirection"}),he=u.useDeviceTargetClass(e,{prefix:"border-color_",propsKey:"thumbBorderColor"}),xe=u.useDeviceTargetClass(e,{prefix:"border-color_hover_",propsKey:"thumbBorderColorHover"}),_e=u.useDeviceTargetClass(e,{prefix:"border_type_",propsKey:"thumbBorderType"});return j.default.createElement(j.default.Fragment,null,j.default.createElement("div",ie({className:`form-dropzone__dropzone dropzone ${o} thumbColumn form-dropzone__dropzone_size_${i} ${pe}`}),j.default.createElement("input",Object.assign({},oe(),{name:a})),j.default.createElement("div",{className:M.default("form-dropzone__dropzone-wrapper",S&&`form-dropzone__dropzone-wrapper_column_${S}`,ne,ue,de,me,ce,fe)},ee.map(((e,t)=>j.default.createElement("aside",{className:M.default("form-dropzone__thumb",ne,ge,be,he,xe,_e),key:`${e.id||`${e.name}_${t}`||"i"+t}`},A&&!e.error&&j.default.createElement("div",{className:"form-dropzone__thumb-image"},j.default.createElement("img",{className:"form-dropzone__thumb-image-inner",src:e.preview||e.image,onLoad:()=>{URL.revokeObjectURL(e.preview)}})),e.error&&j.default.createElement("div",null,j.default.createElement(n.Text,{size:f,textColor:p,textWrap:T,textWeight:v},l||e.error)),I&&j.default.createElement("div",{className:"form-dropzone__thumb-name"},j.default.createElement(n.Text,{size:f,textColor:p,textWrap:T,textWeight:v,className:"form-dropzone__thumb-name-inner"},e.name)),X&&j.default.createElement("div",{className:"form-dropzone__thumb-loader"},j.default.createElement(_.Loader,{fill:"surfacePrimary",height:"fill",itemFill:"surfaceItemAccent",set:"simple",width:"fill"})),j.default.createElement("div",{className:"form-dropzone__thumb-remove",onClick:e=>le(e,t)},j.default.createElement(n.Text,{size:d,textColor:m,textWeight:c,textColorHover:h,className:"form-dropzone__thumb-remove-text"},w||"Remove"))))),ee.length?j.default.createElement("div",{className:"form-dropzone__hint form-dropzone__hint_type_add-more"},j.default.createElement(n.Text,{size:s,textColor:y,textWrap:C,textWeight:E,className:"form-dropzone__hint-title"},L||"Select a file or drag in form"),j.default.createElement(n.Text,{size:F,textColor:N,textWrap:P,textWeight:z,className:"form-dropzone__hint-text"},V)):j.default.createElement("div",{className:"form-dropzone__hint"},j.default.createElement(n.Text,{size:s,textColor:y,textWrap:C,textWeight:E,className:"form-dropzone__hint-title"},L||"Select a file or drag in form"),j.default.createElement(n.Text,{size:F,textColor:N,textWrap:P,textWeight:z,className:"form-dropzone__hint-text"},V)))),U&&j.default.createElement("div",{className:"form-field__message"},j.default.createElement(n.Text,{className:"form-field__message-item form-field__message-item_type_message",size:k,textWeight:R,textColor:q},U)))}));Q.propTypes={dropzoneProps:B.default.object,hintDescription:B.default.string,hintTitle:B.default.string,inputName:B.default.string,inputValue:B.default.any,isPreviews:B.default.bool,isShowFilename:B.default.bool,loadingText:B.default.string,metaError:B.default.string,metaTouched:B.default.bool,removeThumbText:B.default.string,onAddFiles:B.default.func,onDeleteFile:B.default.func};const X=j.default.memo((function(e){const{name:t,shape:a,size:i,borderWidth:o,borderColor:l,borderColorHover:s,borderType:n,label:u,thumbBorderWidth:d,thumbBorderColor:m,thumbBorderColorHover:c,thumbBorderType:f,removeThumbTextHoverColor:p,labelTextColor:b,fill:g,fillHover:h,className:x,removeThumbText:_,thumbNameTextSize:T,thumbNameTextColor:v,thumbNameTextWrap:y,thumbNameTextWeight:C,removeThumbTextSize:S,removeThumbTextColor:E,removeThumbTextWeight:F,hintTitle:N,errorMessageTextSize:P,errorMessageTextWeight:z,errorMessageTextColor:k,fieldProps:R,hintTitleTextSize:q,hintTitleTextColor:B,hintTitleTextWrap:W,hintTitleTextWeight:O,hintDescriptionTextSize:D,hintDescriptionTextColor:w,hintDescriptionTextWrap:L,hintDescriptionTextWeight:V,hideMessage:I,thumbDirection:$,hintDescription:H,isShowFilename:G,fileErrorText:K,dropzoneProps:U,maxFiles:J,maxSize:Y,thumbColumn:X,isRequired:Z,isPreviews:ee,onAddFiles:te,onDeleteFile:ae,classNameGroupItem:re}=e;return j.default.createElement(r.Field,{name:t},(({input:e,meta:t})=>j.default.createElement(A,Object.assign({className:M.default("form-field_type_dropzone","form__item_type_dropzone",re),fieldClassName:"form-dropzone",inputName:e.name,inputValue:e.value,isRequired:Z,label:u,labelTextColor:b,metaActive:t.active,metaError:t.error,metaModifiedSinceLastSubmit:t.modifiedSinceLastSubmit,metaSubmitError:t.submitError,metaSubmitFailed:t.submitFailed,metaTouched:t.touched,metaValid:t.valid,hideMessage:I},R),j.default.createElement(Q,{dropzoneProps:U,hintDescription:H,hintTitle:N,borderWidth:o,borderColor:l,borderColorHover:s,borderType:n,thumbBorderWidth:d,thumbBorderColor:m,thumbBorderColorHover:c,thumbBorderType:f,fileErrorText:K,fill:g,size:i,maxFiles:J,maxSize:Y,removeThumbTextHoverColor:p,fillHover:h,className:x,thumbColumn:X,thumbDirection:$,inputName:e.name,inputValue:e.value,thumbNameTextSize:T,thumbNameTextColor:v,thumbNameTextWrap:y,thumbNameTextWeight:C,hintTitleTextSize:q,hintTitleTextColor:B,hintTitleTextWrap:W,hintTitleTextWeight:O,removeThumbTextSize:S,removeThumbTextColor:E,removeThumbTextWeight:F,hintDescriptionTextSize:D,hintDescriptionTextColor:w,hintDescriptionTextWrap:L,hintDescriptionTextWeight:V,errorMessageTextSize:P,errorMessageWeight:z,errorMessageTextColor:k,isPreviews:ee,shape:a,isShowFilename:G,metaError:t.error,metaTouched:t.touched,removeThumbText:_,onAddFiles:te,onDeleteFile:ae}))))}));X.defaultProps={errorMessageTextSize:"s",errorMessageTextColor:"errorTextPrimary",thumbColumn:1,thumbDirection:"vertical"},X.propTypes={name:B.default.string.isRequired,className:B.default.string,classNameGroupItem:B.default.string,classNameInput:B.default.string,classNameInputWrapper:B.default.string,dropzoneProps:B.default.object,hintDescription:B.default.string,hintTitle:B.default.string,inputClass:B.default.string,isPreviews:B.default.bool,isRequired:B.default.bool,isShowFilename:B.default.bool,label:B.default.any,removeThumbText:B.default.string,onAddFiles:B.default.func,onDeleteFile:B.default.func};const Z=j.default.memo((function(e){const{after:a,before:i,className:o,label:l,labelTextColor:s,labelTextSize:u,labelTextWeight:d,message:m,errorMessageTextSize:c,errorMessageTextWeight:f,errorMessageTextColor:p,messageTextSize:b,messageTextWeight:g,messageTextColor:h,children:x,dataTour:_,hideMessage:v,name:y,showErrorsOnSubmit:C}=e;return j.default.createElement(r.Field,{name:y},(({input:e,meta:r})=>{const S=r.error||!r.modifiedSinceLastSubmit&&r.submitError||!1,E=t.useMemo((()=>C?r.submitFailed&&r.touched&&S:r.touched&&S),[C,r.submitFailed,r.touched,S]);return j.default.createElement("div",{className:M.default("form__group",o),"data-tour":_},j.default.createElement("div",{className:"form__group-wrapper"},i,j.default.createElement("div",{className:"form__group-label"},j.default.createElement(T.Title,{textColor:s,size:u,textWeight:d},l)),j.default.createElement("div",{className:"form__group-items"},x),a),!v&&j.default.createElement(j.default.Fragment,null,Boolean(E)&&j.default.createElement(n.Text,{className:"form__group-message form__group-message_type-error",size:c,textWeight:f,textColor:p,id:`${y}-error`},S),Boolean(m)&&!E&&j.default.createElement(n.Text,{className:"form__group-message",size:b,textWeight:g,textColor:h},m),Boolean(!E)&&Boolean(!m)&&j.default.createElement(n.Text,{className:"form__group-message",size:b}," ")))}))}));Z.defaultProps={inputProps:{},fieldProps:{},type:"normal",errorMessageTextSize:"s",errorMessageTextColor:"errorTextPrimary",messageTextSize:"s",messageTextColor:"surfaceTextTertiary"},Z.propTypes={name:B.default.string.isRequired,isRequired:B.default.bool,fieldProps:B.default.object,inputProps:B.default.object};const ee=j.default.memo((function(e){const{isPassword:a,isRequired:i,fieldProps:o,inputProps:l,isRevealable:s,name:n,parse:u,iconSize:d,iconBorder:m,iconBorderHover:c,iconFill:f,iconFillHover:p,iconRevealableShow:b,iconRevealableHide:g,iconShape:h,hideMessage:x,onChange:_,classNameGroupItem:T}=e,[C,S]=t.useState(!1),E=t.useMemo((()=>a?C?"text":"password":"text"),[C,a]),F=t.useCallback((e=>{e.preventDefault(),S((e=>!e))}),[S]);return j.default.createElement(r.Field,{name:n,parse:u},(({input:e,meta:a})=>{const r=t.useCallback((t=>{e.onChange(t),_&&_(t.target.value,e.name)}),[_]);return j.default.createElement(A,Object.assign({className:M.default("form-field_type_input","form__item_type_input",T),fieldClassName:s?"form-password":"form-input",inputName:e.name,inputValue:e.value||"",isRequired:i,metaActive:a.active,metaError:a.error,metaModifiedSinceLastSubmit:a.modifiedSinceLastSubmit,metaSubmitError:a.submitError,metaSubmitFailed:a.submitFailed,metaTouched:a.touched,metaValid:a.valid,hideMessage:x},o),j.default.createElement(v.Input,Object.assign({className:M.default(a.active&&"input_state_focus",a.error&&a.touched&&"input_state_error"),autoComplete:"nope",name:e.name,type:E,value:e.value||"",onBlur:e.onBlur,onChange:r,onFocus:e.onFocus},l)),s&&j.default.createElement(y.Icon,{className:"form-field__icon",iconFill:f,iconFillHover:p,SvgImage:C?g:b,imageSrc:C?g:b,shape:h,size:d,onClick:F}))}))}));function te(e){const{input:a,option:r,onChange:i,inputProps:o}=e,l=t.useCallback((e=>{e.target.checked&&i(r.value)}),[]);return j.default.createElement(C.RadioButton,Object.assign({className:"form-radio__item",checked:r.value===a.value,name:a.name,type:"radio",value:r.value,onBlur:a.onBlur,onChange:l,onFocus:a.onFocus,label:r.label},o))}function ae(e){const{input:a,value:r,onChange:i}=e,o=t.useCallback((e=>i(e.target.value)),[i]);return j.default.createElement(v.Input,Object.assign({autoComplete:"nope",name:a.name,onBlur:a.onBlur,onChange:o,onFocus:a.onFocus,value:r},e))}function re(e){const{input:a,options:r,editableProps:i,onChange:o,inputProps:l}=e,[s,n]=t.useState((()=>r.find((e=>e.value===a.value))?"":a.value));t.useEffect((()=>{if(a.value){const e=r.find((e=>e.value===a.value&&!e.editable));n(e?"":a.value)}else n("")}),[a.value]);const u=t.useCallback((e=>{a.onChange(e),o&&o(e,a.name)}),[a,o]),d=t.useCallback((e=>{n(""),u(e)}),[u]),m=t.useCallback((e=>{n(e),u(e)}),[u]);return j.default.createElement(j.default.Fragment,null,r.map((e=>e.editable?j.default.createElement(ae,{key:e.label,input:a,value:s,option:e,onChange:m,editableProps:i,inputProps:l}):j.default.createElement(te,{key:e.value,input:a,option:e,onChange:d,inputProps:l}))))}ee.defaultProps={inputProps:{},fieldProps:{}},ee.propTypes={fieldProps:B.default.object,inputProps:B.default.object,isPassword:B.default.bool,isRequired:B.default.bool,isRevealable:B.default.bool,name:B.default.string.isRequired,onChange:B.default.func},te.propTypes={inputProps:B.default.object,onChange:B.default.func,option:B.default.shape({label:B.default.string,value:B.default.string}),input:B.default.shape({name:B.default.string,value:B.default.string,onBlur:B.default.func,onFocus:B.default.func,onChange:B.default.func})},ae.propTypes={input:B.default.string,value:B.default.string,editableProps:B.default.object,onChange:B.default.func},re.propTypes={editableProps:B.default.object,input:B.default.object,inputProps:B.default.object,onChange:B.default.object,options:B.default.object};const ie=j.default.memo((function(e){const{isRequired:t,name:a,options:i,fieldProps:o,editableProps:l,inputProps:s,onChange:n,hideMessage:u}=e;return j.default.createElement(r.Field,{name:a},(({input:e,meta:a})=>j.default.createElement(A,Object.assign({className:"form__item_type_radio",fieldClassName:"form-radio",inputName:e.name,inputValue:e.value||"",isRequired:t,metaActive:a.active,metaError:a.error,metaModifiedSinceLastSubmit:a.modifiedSinceLastSubmit,metaSubmitError:a.submitError,metaSubmitFailed:a.submitFailed,metaTouched:a.touched,metaValid:a.valid,hideMessage:u},o),j.default.createElement(re,{input:e,options:i,onChange:n,editableProps:l,inputProps:s}))))}));function oe(e){const{options:a,isRequired:i,name:o,fieldProps:l,inputProps:s,hideMessage:n}=e,{change:u}=r.useForm();return j.default.createElement(r.Field,{name:o},(({input:e,meta:r})=>{const d=t.useMemo((()=>{const t={value:null,label:null};if(e.value){return a.find((t=>t.value===e.value))||t}return t}),[e.value]),m=t.useCallback((e=>{u(o,e.value)}),[u]);return j.default.createElement(A,Object.assign({className:M.default("form-field_type_segmented","form__item_type_segmented"),fieldClassName:"form-segmented",inputName:e.name,inputValue:e.value||[],isRequired:i,metaActive:r.active,metaError:r.error,metaModifiedSinceLastSubmit:r.modifiedSinceLastSubmit,metaSubmitError:r.submitError,metaSubmitFailed:r.submitFailed,metaTouched:r.touched,metaValid:r.valid,hideMessage:n},l),j.default.createElement(S.Segmented,Object.assign({segments:a,setActiveSegment:m,activeSegment:d},s)))}))}function le(e,t){const a=Array.isArray(t)?t:[t];let r=[];return e.forEach((e=>{const i=a.includes(e.value),o=a.includes(e.label);let l=[];e.options&&(l=le(e.options,t)),i||o?r.push(e):l.length&&(r=r.concat(l))})),r}ie.defaultProps={fieldProps:{},editableProps:{},inputProps:{},options:[]},ie.propTypes={name:B.default.string.isRequired,fieldProps:B.default.object,inputProps:B.default.object,editableProps:B.default.object,isRequired:B.default.bool,options:B.default.array,onChange:B.default.func},oe.propTypes={options:B.default.array.isRequired,name:B.default.string.isRequired,className:B.default.string,inputClass:B.default.string,isRequired:B.default.bool,label:B.default.string,placeholder:B.default.string,fieldProps:B.default.object,inputProps:B.default.object};const se=j.default.memo((function(e){const{isRequired:a,key:i,name:o,options:l,fieldProps:s,selectProps:n,selectRef:u,onChange:d,classNameGroupItem:m,hideMessage:c}=e;return j.default.createElement(r.Field,{name:o},(({input:e,meta:r})=>{const o=t.useCallback((t=>{e.onChange(t),d&&d(t,e.name)}),[d]),[f,p]=t.useState(null),b=t.useMemo((()=>{const t=le(l,e.value);return!t.length&&e.value?.length&&t.push({value:e.value,label:e.value}),t}),[e.value]);t.useEffect((()=>p(b)),[b]);const g=t.useCallback(((e,t)=>{const a=Array.isArray(e)?e.map((e=>e.value)):e?.value||null;p(e),o(a)}),[o]);return j.default.createElement(A,Object.assign({className:M.default("form-field_type_select","form__item_type_select",m),fieldClassName:"form-select",inputName:e.name,inputValue:e.value,isRequired:a,metaActive:r.active,metaError:r.error,metaModifiedSinceLastSubmit:r.modifiedSinceLastSubmit,metaSubmitError:r.submitError,metaSubmitFailed:r.submitFailed,metaTouched:r.touched,metaValid:r.valid,hideMessage:c},s),j.default.createElement(E.Select,Object.assign({className:"form-select-item",instanceId:`id_${e.name}`,value:f,onChange:g,options:l,ref:u,key:i},n)))}))}));se.propTypes={name:B.default.string.isRequired,selectProps:B.default.object,isRequired:B.default.bool,label:B.default.any,messageType:B.default.string,options:B.default.array,onChange:B.default.func};const ne=j.default.memo((function(e){const{name:a,isRequired:i,onChange:o,fieldProps:l,inputProps:s,classNameGroupItem:n,hideMessage:u}=e;return j.default.createElement(r.Field,{name:a,type:"checkbox"},(({input:e,meta:a})=>{const r=t.useCallback((t=>{e.onChange(t),o&&o(t.target.checked,e.name)}),[o]);return j.default.createElement(A,Object.assign({className:M.default("form-field_type_switch","form__item_type_switch",n),fieldClassName:"form-switch",inputName:e.name,inputValue:e.checked,isRequired:i,metaActive:a.active,metaError:a.error,metaModifiedSinceLastSubmit:a.modifiedSinceLastSubmit,metaSubmitError:a.submitError,metaSubmitFailed:a.submitFailed,metaTouched:a.touched,metaValid:a.valid,hideMessage:u,tag:"label"},l),j.default.createElement(F.Switch,Object.assign({autoComplete:"nope",checked:e.checked,name:e.name,type:"checkbox",onBlur:e.onBlur,onChange:r,onFocus:e.onFocus},s)))}))}));ne.defaultProps={inputProps:{},fieldProps:{}},ne.propTypes={fieldProps:B.default.object,inputProps:B.default.object,isRequired:B.default.bool,name:B.default.string,onChange:B.default.func};const ue=j.default.memo((function(e){const{isRequired:t,name:a,fieldProps:i,inputProps:o,classNameGroupItem:l,hideMessage:s}=e;return j.default.createElement(r.Field,{name:a},(({input:e,meta:a})=>j.default.createElement(A,Object.assign({className:M.default("form-field_type_textarea","form__item_type_textarea",l),fieldClassName:"form-textarea",inputName:e.name,inputValue:e.value,isRequired:t,metaActive:a.active,metaError:a.error,metaModifiedSinceLastSubmit:a.modifiedSinceLastSubmit,metaSubmitError:a.submitError,metaSubmitFailed:a.submitFailed,metaTouched:a.touched,metaValid:a.valid,hideMessage:s},i),j.default.createElement(N.Textarea,Object.assign({autoComplete:"nope",name:e.name,value:e.value,onBlur:e.onBlur,onChange:e.onChange,onFocus:e.onFocus},o)))))}));ue.defaultProps={inputProps:{},fieldProps:{}},ue.propTypes={name:B.default.string.isRequired,isRequired:B.default.bool,fieldProps:B.default.object,inputProps:B.default.object};const de=(e,t)=>{const r=Object.keys(t).map((e=>e===a.FORM_ERROR?"notification__item_status_error":`react-select-id_${e}-input`)),i=e.find((e=>e.name?a.getIn(t,e.name):r.includes(e.id))),o=Object.keys(t);if(!i&&o.length){let e;try{const t=o[0];t===a.FORM_ERROR?e=document.querySelector("notification__item_status_error"):(e=document.querySelector(`#${t}-error`),e||(e=document.querySelector(`#id_${t}`)))}catch(e){console.warn(e)}e&&e.scrollIntoView({block:"center"})}return i&&i.scrollIntoView({block:"center"}),null},me=D.default(null,de),ce={checkbox:"checkbox",custom:"custom",choice:"choice",code:"code",datePicker:"datePicker",dateRangePicker:"dateRangePicker",fileInput:"fileInput",group:"group",radioGroup:"radioGroup",segmented:"segmented",select:"select",switch:"switch",text:"text",textarea:"textarea"};function fe(e,t,a){switch(e.type){case ce.checkbox:return j.default.createElement($,Object.assign({key:t.key},e,a));case ce.choice:return j.default.createElement(H,Object.assign({key:t.key},e,a));case ce.code:return j.default.createElement(K,Object.assign({key:t.key},e,a));case ce.switch:return j.default.createElement(ne,Object.assign({key:t.key},e,a));case ce.segmented:return j.default.createElement(oe,Object.assign({key:t.key},e,a));case ce.datePicker:return j.default.createElement(U,Object.assign({key:t.key},e,a));case ce.fileInput:return j.default.createElement(X,Object.assign({key:t.key},e,a));case ce.radioGroup:return j.default.createElement(ie,Object.assign({key:t.key},e,a));case ce.select:return j.default.createElement(se,Object.assign({key:t.key},e,a));case ce.text:return j.default.createElement(ee,Object.assign({key:t.key},e,a));case ce.textarea:return j.default.createElement(ue,Object.assign({key:t.key},e,a));case ce.custom:return j.default.createElement(G,Object.assign({key:t.key},e,a));case ce.group:return j.default.createElement(Z,Object.assign({key:t.key},e,a),Object.entries(e.group).map((([t,r])=>fe({...r,hideMessage:e.hideMessage,classNameGroupItem:r.classNameGroupItem||"form__group-item"},{key:t+"_form_group"},a))))}}const pe=j.default.forwardRef((function(e,a){const{additionalProps:i,after:o,before:l,buttonDirection:s,buttonGap:m,buttonPadding:c,groupGap:f,className:p,config:b,description:g,descriptionSize:h,descriptionTextColor:x,descriptionTextWeight:v,disableFieldsAutoComplete:y,fieldsGap:C,formName:S,initialValues:E,initialValuesEqual:F,isLoading:N,loader:R,loaderSet:q,loaderFill:B,loaderItemFill:W,loaderText:O,language:D,mutators:w,onChangeFormValues:L,onClickSecondaryButton:I,onClickTertiaryButton:A,onSubmit:$,primaryButton:H,primaryButtonLabel:G,secondaryButton:K,secondaryButtonLabel:U,primaryButtonFill:J,primaryButtonFillHover:Y,secondaryButtonFill:Q,secondaryButtonFillHover:X,primaryButtonSize:Z,primaryButtonLabelTextColor:ee,primaryButtonLabelSize:te,primaryButtonLabelTextWeight:ae,secondaryButtonSize:re,secondaryButtonLabelTextColor:ie,secondaryButtonLabelSize:oe,secondaryButtonLabelTextWeight:le,tertiaryButton:se,tertiaryButtonFill:ne,tertiaryButtonFillHover:ue,tertiaryButtonSize:de,tertiaryButtonLabelTextColor:ce,tertiaryButtonLabelSize:pe,tertiaryButtonLabelTextWeight:be,tertiaryButtonLabel:ge,set:he,type:xe,buttonJustifyContent:_e,title:Te,notificationType:ve,buttonFill:ye,titleTextSize:Ce,titleTextColor:Se,titleTextWeight:Ee,validationSchema:Fe,dataTour:Ne,dataTourButtons:Pe,dataTourPrimaryButton:ze,dataTourSecondaryButton:ke,dataTourTertiaryButton:Re}=e,qe=V(Fe,D),je=t.useCallback((e=>{a&&(a.current=e)}),[a]),Be=u.useDeviceTargetClass(e,{prefix:"fill_",propsKey:"fill"}),Me=u.useDeviceTargetClass(e,{prefix:"direction_",propsKey:"direction"}),We=u.useDeviceTargetClass(e,{prefix:"shape_",propsKey:"shape"}),Oe=u.useDeviceTargetClass(e,{prefix:"elevation_",propsKey:"elevation"}),{styles:De}=d.useStyles(e);return j.default.createElement(r.Form,{decorators:[me],initialValues:E,initialValuesEqual:F,mutators:w,render:({handleSubmit:e,submitError:t,modifiedSinceLastSubmit:a,form:u})=>j.default.createElement("form",{style:De,className:M.default(p,"form",he&&`form_set_${he}`,xe&&`form_type_${xe}`,Me,Be,We,Oe),name:S,"data-tour":Ne,ref:()=>je(u),onSubmit:e,autoComplete:y?"off":void 0,autoCorrect:y?"off":void 0,autoCapitalize:y?"off":void 0,spellCheck:y?"false":void 0},l,Te&&j.default.createElement(T.Title,{className:"form__title",size:Ce,textColor:Se,textWeight:Ee},Te),g&&j.default.createElement(n.Text,{className:"form__description",size:h,textColor:x,textWeight:v},g),t&&!a&&j.default.createElement("div",{className:M.default("notification","form-notification",ve?`form-notification_type_${ve}`:"form-notification_type_global")},j.default.createElement(k.NotificationItem,{className:"form-notification__item",titleTextSize:"h6",title:u.getState().submitError,set:"form",status:"error"})),L&&j.default.createElement(r.FormSpy,{subscription:{values:!0},onChange:L}),Boolean(Object.keys(b).length)&&j.default.createElement(z.Group,{direction:"vertical",gap:C||f,className:"form__wrapper"},Object.keys(b).map((e=>fe(b[e],{key:e},i[b[e].name]))),N&&(R||j.default.createElement(_.Loader,{className:"form__loader",set:q,fill:B,itemFill:W,text:O}))),(G||H||U||K||se||ge)&&j.default.createElement(z.Group,{fill:ye,justifyContent:_e,direction:s,padding:c,gap:m,className:"form__button",dataTour:Pe},G?j.default.createElement(P.Button,{width:"fill",className:"form__button-item",fill:J,fillHover:Y,size:Z,labelTextColor:ee,labelSize:te,labelTextWeight:ae,label:G,dataTour:ze}):H,U?j.default.createElement(P.Button,{width:"fill",className:"form__button-item",fill:Q,fillHover:X,size:re,labelTextColor:ie,labelSize:oe,labelTextWeight:le,label:U,onClick:I,dataTour:ke}):K,ge?j.default.createElement(P.Button,{width:"fill",className:"form__button-item",fill:ne,fillHover:ue,size:de,labelTextColor:ce,labelSize:pe,labelTextWeight:be,label:ge,onClick:A,dataTour:Re}):se),o),subscription:{submitting:!0,pristine:!0,modifiedSinceLastSubmit:!0,submitError:!0},validate:qe,onSubmit:$})}));pe.propTypes={additionalProps:B.default.object,after:B.default.any,before:B.default.any,buttonGap:B.default.string,className:B.default.string,config:B.default.object,description:B.default.string,descriptionSize:B.default.string,descriptionTextColor:B.default.string,descriptionTextWeight:B.default.string,disableFieldsAutoComplete:B.default.string,fieldsGap:B.default.string,formName:B.default.string,initialValues:B.default.any,initialValuesEqual:B.default.any,language:B.default.string,isLoading:B.default.bool,loaderText:B.default.string,mutators:B.default.any,onChangeFormValues:B.default.func,onClickSecondaryButton:B.default.func,onSubmit:B.default.func,primaryButton:B.default.string,primaryButtonFill:B.default.string,primaryButtonLabel:B.default.string,secondaryButton:B.default.string,secondaryButtonFill:B.default.string,secondaryButtonLabel:B.default.string,set:B.default.string,title:B.default.string,titleSize:B.default.string,titleTextColor:B.default.string,titleTextWeight:B.default.string,validationSchema:B.default.object},pe.defaultProps={additionalProps:{},isLoading:!1,loaderSet:"simple",loaderFill:"surfacePrimary",loaderItemFill:"surfaceItemAccent",language:"en",titleSize:"h1",buttonDirection:"vertical",direction:"vertical",disableFieldsAutoComplete:!1},Object.defineProperty(exports,"Field",{enumerable:!0,get:function(){return r.Field}}),Object.defineProperty(exports,"useForm",{enumerable:!0,get:function(){return r.useForm}}),Object.defineProperty(exports,"useFormState",{enumerable:!0,get:function(){return r.useFormState}}),exports.Checkbox=$,exports.ChoiceField=H,exports.CodeField=K,exports.CustomField=G,exports.DatePickerField=U,exports.FieldWrapper=A,exports.FieldWrapperBase=I,exports.FileInput=X,exports.FinalForm=pe,exports.Group=Z,exports.InputField=ee,exports.RadioGroup=ie,exports.SegmentedField=oe,exports.SelectField=se,exports.Switch=ne,exports.Textarea=ue,exports.addRequiredFieldsParamToSchema=e=>{const t=Object.entries(e.fields);return e.requiredFields=t.reduce(((e,[t,a])=>(a.exclusiveTests?.required&&e.push(t),e)),[]),e},exports.emailValidation=(e,t)=>{if(!e)return!0;return/^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/.test(String(e).toLowerCase())},exports.focusOnError=de,exports.focusOnErrorDecorator=me,exports.formTypes=ce,exports.generateField=fe,exports.phoneValidation=(t,a)=>!t||e.isPossiblePhoneNumber(t,"RU"),exports.sendFormDataToServer=async(e,t)=>{try{return{success:!0,response:await W.default({url:e,method:"POST",data:t})}}catch(e){const t={};return"string"==typeof e.response?.data&&(t[a.FORM_ERROR]="Something went wrong"),"object"==typeof e.response?.data&&Object.entries(e.response.data).forEach((([e,a])=>{t[e]=a[0]})),{success:!1,formErrors:t,error:e}}},exports.setErrorsMutator=(e,t)=>{const[a,r]=e,i=r.submitError,o=r.error;if("non_field_errors"===a)t.formState.error=o,t.formState.submitError=i;else if(a in t.fields){if(o){const e=Object.assign({},t.formState.errors,{[a]:o});t.fields[a].touched=!0,t.fields[a].error=o,t.formState.errors=e}if(i){const e=Object.assign({},t.formState.submitErrors,{[a]:i});t.fields[a].submitError=i,t.formState.submitErrors=e,t.formState.submitFailed=!0,t.formState.submitSucceeded=!1,t.formState.lastSubmittedValues=t.formState.values}}},exports.useYupValidationSchema=V;