@bigbinary/neeto-form-frontend 3.5.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/app/javascript/src/translations/ar.json +1 -0
  2. package/app/javascript/src/translations/de.json +1 -0
  3. package/app/javascript/src/translations/en.json +6 -2
  4. package/app/javascript/src/translations/es.json +1 -0
  5. package/app/javascript/src/translations/fr.json +1 -0
  6. package/app/javascript/src/translations/nl.json +1 -0
  7. package/app/javascript/src/translations/pl.json +1 -0
  8. package/app/javascript/src/translations/pt.json +1 -0
  9. package/dist/BuildForm.js +113 -97
  10. package/dist/BuildForm.js.map +1 -1
  11. package/dist/ExternalForm.js +3 -3
  12. package/dist/Submission.js +2 -1
  13. package/dist/Submission.js.map +1 -1
  14. package/dist/UrlBuilder.js +4 -3
  15. package/dist/UrlBuilder.js.map +1 -1
  16. package/dist/{buildForm-4a5a5251.js → buildForm-042737cb.js} +3 -2
  17. package/dist/buildForm-042737cb.js.map +1 -0
  18. package/dist/{buildForm-77b32f08.js → buildForm-354c6d6d.js} +3 -2
  19. package/dist/buildForm-354c6d6d.js.map +1 -0
  20. package/dist/cjs/BuildForm.js +111 -95
  21. package/dist/cjs/BuildForm.js.map +1 -1
  22. package/dist/cjs/ExternalForm.js +3 -3
  23. package/dist/cjs/Submission.js +2 -1
  24. package/dist/cjs/Submission.js.map +1 -1
  25. package/dist/cjs/UrlBuilder.js +4 -3
  26. package/dist/cjs/UrlBuilder.js.map +1 -1
  27. package/dist/cjs/hooks.js +1 -1
  28. package/dist/cjs/index.js +5 -5
  29. package/dist/{constants-9310a7c2.js → constants-3d8a5374.js} +4 -2
  30. package/dist/constants-3d8a5374.js.map +1 -0
  31. package/dist/{constants-f0f38e6f.js → constants-43eac775.js} +4 -2
  32. package/dist/constants-43eac775.js.map +1 -0
  33. package/dist/{constants-8afd221a.js → constants-669f203a.js} +26 -6
  34. package/dist/constants-669f203a.js.map +1 -0
  35. package/dist/{constants-25c02c05.js → constants-ca5ca2b1.js} +29 -5
  36. package/dist/constants-ca5ca2b1.js.map +1 -0
  37. package/dist/hooks.js +1 -1
  38. package/dist/index.js +5 -5
  39. package/dist/{utils-a2abd77b.js → utils-0eabfa9b.js} +280 -278
  40. package/dist/utils-0eabfa9b.js.map +1 -0
  41. package/dist/{utils-3fcf4c2b.js → utils-b26ce7e8.js} +279 -277
  42. package/dist/utils-b26ce7e8.js.map +1 -0
  43. package/package.json +14 -14
  44. package/types.d.ts +1 -2
  45. package/dist/buildForm-4a5a5251.js.map +0 -1
  46. package/dist/buildForm-77b32f08.js.map +0 -1
  47. package/dist/constants-25c02c05.js.map +0 -1
  48. package/dist/constants-8afd221a.js.map +0 -1
  49. package/dist/constants-9310a7c2.js.map +0 -1
  50. package/dist/constants-f0f38e6f.js.map +0 -1
  51. package/dist/utils-3fcf4c2b.js.map +0 -1
  52. package/dist/utils-a2abd77b.js.map +0 -1
@@ -9,7 +9,7 @@ var libphonenumberJs = require('libphonenumber-js');
9
9
  var ramda = require('ramda');
10
10
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
11
  var EditorContent = require('@bigbinary/neeto-editor/EditorContent');
12
- var constants$1 = require('./constants-25c02c05.js');
12
+ var constants$1 = require('./constants-ca5ca2b1.js');
13
13
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
14
14
  var Button = require('@bigbinary/neetoui/Button');
15
15
  var NeetoUIMultiEmailInput = require('@bigbinary/neetoui/MultiEmailInput');
@@ -22,9 +22,9 @@ var PhoneNumber = require('@bigbinary/neeto-molecules/PhoneNumber');
22
22
  var yup = require('yup');
23
23
  var i18next = require('i18next');
24
24
  var jsxRuntime = require('react/jsx-runtime');
25
- var constants = require('./constants-f0f38e6f.js');
26
- var classnames = require('classnames');
27
25
  var path = require('path');
26
+ var constants = require('./constants-43eac775.js');
27
+ var classnames = require('classnames');
28
28
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
29
29
  var Refresh = require('@bigbinary/neeto-icons/Refresh');
30
30
  var Input = require('@bigbinary/neetoui/Input');
@@ -78,8 +78,8 @@ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_obje
78
78
  var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
79
79
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
80
80
  var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
81
- var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
82
81
  var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
82
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
83
83
  var Refresh__default = /*#__PURE__*/_interopDefaultLegacy(Refresh);
84
84
  var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
85
85
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
@@ -207,274 +207,9 @@ var getInvalidTypeError = function getInvalidTypeError(label, type) {
207
207
  });
208
208
  };
209
209
 
210
- var _excluded$4 = ["kind", "customValidator"];
211
- var _fieldKindValidatorMa;
212
210
  function ownKeys$g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
213
211
  function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
214
212
  var t$1 = clientI18nInstance.t;
215
- yup__namespace.addMethod(yup__namespace.array, "unique", function () {
216
- var field, message;
217
- if (arguments.length > 1) {
218
- field = arguments[0];
219
- message = arguments[1];
220
- } else {
221
- message = arguments[0];
222
- }
223
- var getValue = function getValue(item) {
224
- return field ? item[field] : item;
225
- };
226
- var valueInLowerCase = ramda.pipe(getValue, ramda.toLower);
227
- return this.test("unique", message, function () {
228
- var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
229
- // ignore destroyed items in the array
230
- var validItems = ramda.reject(ramda.prop("_destroy"), array);
231
- var uniqueItems = new Set(ramda.map(valueInLowerCase, validItems));
232
-
233
- // all items are unique
234
- if (validItems.length === uniqueItems.size) return true;
235
- return this.createError({
236
- path: this.path,
237
- message: message
238
- });
239
- });
240
- });
241
- var isValidDate = function isValidDate(date) {
242
- return date && utils.dayjs(date).isValid();
243
- };
244
- var extractEmailDomain = function extractEmailDomain(email) {
245
- return email === null || email === void 0 ? void 0 : email.split("@")[1];
246
- };
247
- var isEmailFromRestrictedDomain = function isEmailFromRestrictedDomain(email, restrictedDomains) {
248
- var domain = extractEmailDomain(email);
249
- return ramda.includes(domain, restrictedDomains);
250
- };
251
- var validateTextField = function validateTextField(_ref) {
252
- var kind = _ref.kind,
253
- label = _ref.label,
254
- isRequired = _ref.isRequired;
255
- var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
256
- if (kind === constants.QUESTION_KIND.PHONE.value) {
257
- schema = PhoneNumber.validation(getInvalidFieldError(t$1("neetoForm.common.phoneNumberValidation")));
258
- }
259
- if (isRequired) schema = schema.trim().required(getRequiredFieldError(label));
260
- return schema.trim();
261
- };
262
- var validateEmailField = function validateEmailField(_ref2) {
263
- var label = _ref2.label,
264
- isRequired = _ref2.isRequired,
265
- restrictedDomains = _ref2.restrictedDomains;
266
- var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string")).email(getInvalidFieldError("Email")).test("verify domain", function (_ref3) {
267
- var value = _ref3.value;
268
- return t$1("neetoForm.error.emailFromRestrictedDomain", {
269
- domain: extractEmailDomain(value)
270
- });
271
- }, function (value) {
272
- return neetoCist.isNotPresent(value) || !isEmailFromRestrictedDomain(value, restrictedDomains);
273
- });
274
- if (isRequired) schema = schema.trim().required(getRequiredFieldError(label));
275
- return schema.trim();
276
- };
277
- var validateNameField = function validateNameField(_ref4) {
278
- var label = _ref4.label,
279
- isRequired = _ref4.isRequired;
280
- var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
281
- if (isRequired) schema = schema.trim().required(getRequiredFieldError(label));
282
- return schema.trim();
283
- };
284
- var validateSingleChoiceField = function validateSingleChoiceField(_ref5) {
285
- var label = _ref5.label,
286
- isRequired = _ref5.isRequired;
287
- var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
288
- if (isRequired) schema = schema.required(getSelectMinError("an"));
289
- return schema.trim();
290
- };
291
- var validateMultiChoiceField = function validateMultiChoiceField(_ref6) {
292
- var isRequired = _ref6.isRequired;
293
- var schema = yup__namespace.array().of(yup__namespace["boolean"]());
294
- if (isRequired) schema = schema.compact().min(1, getSelectMinError("an"));
295
- return schema;
296
- };
297
- var validateRatingField = function validateRatingField(_ref7) {
298
- var label = _ref7.label,
299
- isRequired = _ref7.isRequired;
300
- var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
301
- if (isRequired) schema = schema.required(getSelectMinError("an"));
302
- return schema.trim();
303
- };
304
- var validateStarRatingField = function validateStarRatingField(_ref8) {
305
- var label = _ref8.label,
306
- isRequired = _ref8.isRequired;
307
- var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
308
- if (isRequired) {
309
- schema = schema.required(getSelectMinError("a", t$1("neetoForm.common.rating")));
310
- }
311
- return schema.trim();
312
- };
313
- var validateTermsField = function validateTermsField(_ref9) {
314
- var _ref9$isRequired = _ref9.isRequired,
315
- isRequired = _ref9$isRequired === void 0 ? true : _ref9$isRequired;
316
- return isRequired ? yup__namespace["boolean"]().oneOf([true], t$1("neetoForm.common.mustAcceptTermsAndConditions")) : yup__namespace["boolean"]().notRequired();
317
- };
318
- var validateConditionField = function validateConditionField(_ref10) {
319
- var _ref10$isRequired = _ref10.isRequired,
320
- isRequired = _ref10$isRequired === void 0 ? true : _ref10$isRequired;
321
- return isRequired ? yup__namespace["boolean"]().oneOf([true], t$1("neetoForm.common.mustAcceptCondition")) : yup__namespace["boolean"]().notRequired();
322
- };
323
- var validateDateField = function validateDateField(_ref11) {
324
- var label = _ref11.label,
325
- isRequired = _ref11.isRequired;
326
- var schema = yup__namespace.string().test("is valid date", getInvalidTypeError(label, "date"), function (value) {
327
- return neetoCist.isNotPresent(value) || isValidDate(value);
328
- });
329
- if (isRequired) {
330
- schema = schema.required(getRequiredFieldError(label));
331
- }
332
- return schema;
333
- };
334
- var validateMultiEmailField = function validateMultiEmailField(_ref12) {
335
- var isRequired = _ref12.isRequired;
336
- var schema = yup__namespace.array().of(yup__namespace.object().shape({
337
- value: yup__namespace.string().email(getInvalidFieldError("Email")).trim()
338
- })).nullable();
339
- if (isRequired) {
340
- schema = schema.compact().min(1, getSelectMinError("an", t$1("neetoForm.common.email")));
341
- }
342
- return schema;
343
- };
344
- var editorHasValue = function editorHasValue(content) {
345
- return !utils$1.isEditorEmpty(content);
346
- };
347
- var validateRichTextField = function validateRichTextField(_ref13) {
348
- var isRequired = _ref13.isRequired;
349
- var schema = yup__namespace.string();
350
- if (isRequired) {
351
- schema = schema.test("required", getRequiredFieldError("content"), editorHasValue);
352
- }
353
- return schema.trim();
354
- };
355
- var validateFileUploadField = function validateFileUploadField(_ref14) {
356
- var isRequired = _ref14.isRequired,
357
- multipleFilesAllowed = _ref14.multipleFilesAllowed;
358
- var files_schema = yup__namespace.array();
359
- if (isRequired) {
360
- files_schema = files_schema.of(yup__namespace.object().shape({
361
- name: yup__namespace.string(),
362
- signedId: yup__namespace.string().required(t$1("neetoForm.fileUpload.validations.waitForUpload")),
363
- url: yup__namespace.string().required(t$1("neetoForm.fileUpload.validations.waitForUpload"))
364
- })).unique("name", t$1("neetoForm.fileUpload.validations.removeDuplicates")).min(1, multipleFilesAllowed ? t$1("neetoForm.fileUpload.validations.atLeastOneFileRequired") : t$1("neetoForm.fileUpload.validations.fileIsRequired"));
365
- }
366
- return yup__namespace.object().shape({
367
- files: files_schema
368
- });
369
- };
370
- var validateCaptchaField = function validateCaptchaField(_ref15) {
371
- var variant = _ref15.variant;
372
- return variant === constants$1.CAPTCHA_TYPES.MATH_CAPTCHA ? yup__namespace.mixed().test("verification failed", t$1("neetoForm.error.captchaVerificationFailed"), function (value) {
373
- return neetoCist.isNotPresent(value) || value;
374
- }).transform(function (value) {
375
- return value === "" ? null : value;
376
- }).required(t$1("neetoForm.error.incompleteCaptcha")) : yup__namespace.string().trim().required(t$1("neetoForm.error.incompleteCaptcha"));
377
- };
378
- var fieldKindValidatorMap = (_fieldKindValidatorMa = {}, _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.EMAIL.value, validateEmailField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.NAME.value, validateNameField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.PHONE.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.TEXT.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.QUESTION.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.TEXTAREA.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.DECIMAL.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.INTEGER.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.DROPDOWN.value, validateSingleChoiceField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.RADIO.value, validateSingleChoiceField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.CHECKBOX.value, validateMultiChoiceField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.RATING.value, validateRatingField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.TERMS.value, validateTermsField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.DATE.value, validateDateField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.STAR_RATING.value, validateStarRatingField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.ADDITIONAL_GUESTS.value, validateMultiEmailField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.RICH_TEXT.value, validateRichTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.CONDITION.value, validateConditionField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.FILE_UPLOAD.value, validateFileUploadField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.CAPTCHA.value, validateCaptchaField), _fieldKindValidatorMa);
379
- var validateFieldValue = function validateFieldValue(_ref16) {
380
- var kind = _ref16.kind,
381
- customValidator = _ref16.customValidator,
382
- otherProps = _objectWithoutProperties__default["default"](_ref16, _excluded$4);
383
- return function (value) {
384
- if (!(kind in fieldKindValidatorMap)) return;
385
- var validator = fieldKindValidatorMap[kind];
386
- var schema = customValidator || validator(_objectSpread$g({
387
- kind: kind
388
- }, otherProps));
389
-
390
- // eslint-disable-next-line consistent-return, no-async-promise-executor
391
- return new Promise( /*#__PURE__*/function () {
392
- var _ref17 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(resolve) {
393
- return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
394
- while (1) switch (_context.prev = _context.next) {
395
- case 0:
396
- _context.prev = 0;
397
- _context.next = 3;
398
- return schema.validate(value);
399
- case 3:
400
- resolve(undefined);
401
- _context.next = 9;
402
- break;
403
- case 6:
404
- _context.prev = 6;
405
- _context.t0 = _context["catch"](0);
406
- resolve(_context.t0.message);
407
- case 9:
408
- case "end":
409
- return _context.stop();
410
- }
411
- }, _callee, null, [[0, 6]]);
412
- }));
413
- return function (_x) {
414
- return _ref17.apply(this, arguments);
415
- };
416
- }());
417
- };
418
- };
419
-
420
- var MultipleEmailInput = function MultipleEmailInput(_ref) {
421
- var _jsx2;
422
- var question = _ref.question,
423
- customValidator = _ref.customValidator;
424
- var name = question.id,
425
- kind = question.kind,
426
- isRequired = question.isRequired,
427
- nodeId = question.nodeId;
428
- var label = index.fieldWithFallback(question, "label");
429
- var _useTranslation = reactI18next.useTranslation(),
430
- t = _useTranslation.t;
431
- var _useField = formik.useField({
432
- name: name || nodeId,
433
- validate: validateFieldValue({
434
- kind: kind,
435
- label: label,
436
- isRequired: isRequired,
437
- customValidator: customValidator
438
- })
439
- }),
440
- _useField2 = _slicedToArray__default["default"](_useField, 3),
441
- field = _useField2[0],
442
- meta = _useField2[1],
443
- _useField2$ = _useField2[2],
444
- setValue = _useField2$.setValue,
445
- setTouched = _useField2$.setTouched;
446
- var _useState = React.useState(neetoCist.isPresent(field.value)),
447
- _useState2 = _slicedToArray__default["default"](_useState, 2),
448
- isInputVisible = _useState2[0],
449
- setIsInputVisible = _useState2[1];
450
- return /*#__PURE__*/jsxRuntime.jsx("div", {
451
- className: "neeto-form-engine-input__wrapper",
452
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
453
- className: "neeto-ui-w-full",
454
- children: isInputVisible ? /*#__PURE__*/jsxRuntime.jsx(NeetoUIMultiEmailInput__default["default"], {
455
- isRequired: isRequired,
456
- label: label,
457
- error: meta.touched ? meta.error : "",
458
- helpText: t("neetoForm.common.addGuestsHelper"),
459
- name: field.name,
460
- placeholder: index.fieldWithFallback(question, "placeholder"),
461
- value: field.value,
462
- onBlur: function onBlur() {
463
- return setTouched(true);
464
- },
465
- onChange: setValue
466
- }) : /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], (_jsx2 = {
467
- label: label
468
- }, _defineProperty__default["default"](_jsx2, "label", t("neetoForm.common.addGuests")), _defineProperty__default["default"](_jsx2, "style", "secondary"), _defineProperty__default["default"](_jsx2, "onClick", function onClick() {
469
- return setIsInputVisible(true);
470
- }), _jsx2))
471
- })
472
- });
473
- };
474
-
475
- function ownKeys$f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
476
- function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
477
- var t = clientI18nInstance.t;
478
213
  var toEmailValues = function toEmailValues() {
479
214
  var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
480
215
  return values.map(function (value) {
@@ -567,7 +302,7 @@ var generateInitValues = function generateInitValues(_ref7) {
567
302
  var valuesMap = {};
568
303
  if (initialValues) {
569
304
  valuesMap = initialValues.reduce(function (acc, answer) {
570
- return _objectSpread$f(_objectSpread$f({}, acc), {}, _defineProperty__default["default"]({}, answer.questionId, {
305
+ return _objectSpread$g(_objectSpread$g({}, acc), {}, _defineProperty__default["default"]({}, answer.questionId, {
571
306
  value: answer.value,
572
307
  optionIds: answer.optionIds
573
308
  }));
@@ -658,6 +393,7 @@ var generateInitValues = function generateInitValues(_ref7) {
658
393
  return;
659
394
  }
660
395
  case constants.QUESTION_KIND.PHONE.value:
396
+ case constants.QUESTION_KIND.SMS_REMINDER.value:
661
397
  {
662
398
  var _valuesMap$id$value3, _valuesMap6;
663
399
  initValues[id] = (_valuesMap$id$value3 = (_valuesMap6 = valuesMap) === null || _valuesMap6 === void 0 || (_valuesMap6 = _valuesMap6[id]) === null || _valuesMap6 === void 0 ? void 0 : _valuesMap6.value) !== null && _valuesMap$id$value3 !== void 0 ? _valuesMap$id$value3 : getPhoneNumberFromUrl(fieldCodes, fieldCode);
@@ -713,7 +449,7 @@ var generateFormResponse = function generateFormResponse(response, questions) {
713
449
  kind: kind
714
450
  });
715
451
  });
716
- } else if (kind === constants.QUESTION_KIND.PHONE.value) {
452
+ } else if (isPhoneNumberField(kind)) {
717
453
  formResponse.push({
718
454
  questionId: id,
719
455
  value: responseValue ? libphonenumberJs.parsePhoneNumber(responseValue).formatInternational() : "",
@@ -769,21 +505,21 @@ var renderErrorMessage = function renderErrorMessage(errorObject, maxFileSize, i
769
505
  var code = error.code;
770
506
  switch (code) {
771
507
  case constants.ERROR_CODES.FILE_TOO_LARGE:
772
- return t("neetoForm.fileUpload.dropzone.errors.fileTooLarge", {
508
+ return t$1("neetoForm.fileUpload.dropzone.errors.fileTooLarge", {
773
509
  fileName: file.name,
774
510
  maxSize: Math.round(maxFileSize / 1048576)
775
511
  });
776
512
  case constants.ERROR_CODES.FILE_INVALID_TYPE:
777
- return t("neetoForm.fileUpload.dropzone.errors.fileInvalidType", {
513
+ return t$1("neetoForm.fileUpload.dropzone.errors.fileInvalidType", {
778
514
  fileType: path__default["default"].extname(file.name)
779
515
  });
780
516
  case constants.ERROR_CODES.TOO_MANY_FILES:
781
517
  if (!isMultiple) {
782
- return t("neetoForm.fileUpload.dropzone.errors.tooManyFiles");
518
+ return t$1("neetoForm.fileUpload.dropzone.errors.tooManyFiles");
783
519
  }
784
520
  }
785
521
  }
786
- return t("neetoForm.fileUpload.dropzone.errors.defaultError", {
522
+ return t$1("neetoForm.fileUpload.dropzone.errors.defaultError", {
787
523
  fileName: file.name
788
524
  });
789
525
  };
@@ -795,6 +531,272 @@ var getSelectedRating = function getSelectedRating(value) {
795
531
  var parsedValue = parseInt(value);
796
532
  return isNaN(parsedValue) ? -1 : parsedValue;
797
533
  };
534
+ var isPhoneNumberField = ramda.includes(ramda.__, [constants.QUESTION_KIND.PHONE.value, constants.QUESTION_KIND.SMS_REMINDER.value]);
535
+
536
+ var _excluded$4 = ["kind", "customValidator"];
537
+ var _fieldKindValidatorMa;
538
+ function ownKeys$f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
539
+ function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
540
+ var t = clientI18nInstance.t;
541
+ yup__namespace.addMethod(yup__namespace.array, "unique", function () {
542
+ var field, message;
543
+ if (arguments.length > 1) {
544
+ field = arguments[0];
545
+ message = arguments[1];
546
+ } else {
547
+ message = arguments[0];
548
+ }
549
+ var getValue = function getValue(item) {
550
+ return field ? item[field] : item;
551
+ };
552
+ var valueInLowerCase = ramda.pipe(getValue, ramda.toLower);
553
+ return this.test("unique", message, function () {
554
+ var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
555
+ // ignore destroyed items in the array
556
+ var validItems = ramda.reject(ramda.prop("_destroy"), array);
557
+ var uniqueItems = new Set(ramda.map(valueInLowerCase, validItems));
558
+
559
+ // all items are unique
560
+ if (validItems.length === uniqueItems.size) return true;
561
+ return this.createError({
562
+ path: this.path,
563
+ message: message
564
+ });
565
+ });
566
+ });
567
+ var isValidDate = function isValidDate(date) {
568
+ return date && utils.dayjs(date).isValid();
569
+ };
570
+ var extractEmailDomain = function extractEmailDomain(email) {
571
+ return email === null || email === void 0 ? void 0 : email.split("@")[1];
572
+ };
573
+ var isEmailFromRestrictedDomain = function isEmailFromRestrictedDomain(email, restrictedDomains) {
574
+ var domain = extractEmailDomain(email);
575
+ return ramda.includes(domain, restrictedDomains);
576
+ };
577
+ var validateTextField = function validateTextField(_ref) {
578
+ var kind = _ref.kind,
579
+ label = _ref.label,
580
+ isRequired = _ref.isRequired;
581
+ var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
582
+ if (isPhoneNumberField(kind)) {
583
+ schema = PhoneNumber.validation(getInvalidFieldError(t("neetoForm.common.phoneNumberValidation")));
584
+ }
585
+ if (isRequired) schema = schema.trim().required(getRequiredFieldError(label));
586
+ return schema.trim();
587
+ };
588
+ var validateEmailField = function validateEmailField(_ref2) {
589
+ var label = _ref2.label,
590
+ isRequired = _ref2.isRequired,
591
+ restrictedDomains = _ref2.restrictedDomains;
592
+ var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string")).email(getInvalidFieldError("Email")).test("verify domain", function (_ref3) {
593
+ var value = _ref3.value;
594
+ return t("neetoForm.error.emailFromRestrictedDomain", {
595
+ domain: extractEmailDomain(value)
596
+ });
597
+ }, function (value) {
598
+ return neetoCist.isNotPresent(value) || !isEmailFromRestrictedDomain(value, restrictedDomains);
599
+ });
600
+ if (isRequired) schema = schema.trim().required(getRequiredFieldError(label));
601
+ return schema.trim();
602
+ };
603
+ var validateNameField = function validateNameField(_ref4) {
604
+ var label = _ref4.label,
605
+ isRequired = _ref4.isRequired;
606
+ var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
607
+ if (isRequired) schema = schema.trim().required(getRequiredFieldError(label));
608
+ return schema.trim();
609
+ };
610
+ var validateSingleChoiceField = function validateSingleChoiceField(_ref5) {
611
+ var label = _ref5.label,
612
+ isRequired = _ref5.isRequired;
613
+ var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
614
+ if (isRequired) schema = schema.required(getSelectMinError("an"));
615
+ return schema.trim();
616
+ };
617
+ var validateMultiChoiceField = function validateMultiChoiceField(_ref6) {
618
+ var isRequired = _ref6.isRequired;
619
+ var schema = yup__namespace.array().of(yup__namespace["boolean"]());
620
+ if (isRequired) schema = schema.compact().min(1, getSelectMinError("an"));
621
+ return schema;
622
+ };
623
+ var validateRatingField = function validateRatingField(_ref7) {
624
+ var label = _ref7.label,
625
+ isRequired = _ref7.isRequired;
626
+ var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
627
+ if (isRequired) schema = schema.required(getSelectMinError("an"));
628
+ return schema.trim();
629
+ };
630
+ var validateStarRatingField = function validateStarRatingField(_ref8) {
631
+ var label = _ref8.label,
632
+ isRequired = _ref8.isRequired;
633
+ var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
634
+ if (isRequired) {
635
+ schema = schema.required(getSelectMinError("a", t("neetoForm.common.rating")));
636
+ }
637
+ return schema.trim();
638
+ };
639
+ var validateTermsField = function validateTermsField(_ref9) {
640
+ var _ref9$isRequired = _ref9.isRequired,
641
+ isRequired = _ref9$isRequired === void 0 ? true : _ref9$isRequired;
642
+ return isRequired ? yup__namespace["boolean"]().oneOf([true], t("neetoForm.common.mustAcceptTermsAndConditions")) : yup__namespace["boolean"]().notRequired();
643
+ };
644
+ var validateConditionField = function validateConditionField(_ref10) {
645
+ var _ref10$isRequired = _ref10.isRequired,
646
+ isRequired = _ref10$isRequired === void 0 ? true : _ref10$isRequired;
647
+ return isRequired ? yup__namespace["boolean"]().oneOf([true], t("neetoForm.common.mustAcceptCondition")) : yup__namespace["boolean"]().notRequired();
648
+ };
649
+ var validateDateField = function validateDateField(_ref11) {
650
+ var label = _ref11.label,
651
+ isRequired = _ref11.isRequired;
652
+ var schema = yup__namespace.string().test("is valid date", getInvalidTypeError(label, "date"), function (value) {
653
+ return neetoCist.isNotPresent(value) || isValidDate(value);
654
+ });
655
+ if (isRequired) {
656
+ schema = schema.required(getRequiredFieldError(label));
657
+ }
658
+ return schema;
659
+ };
660
+ var validateMultiEmailField = function validateMultiEmailField(_ref12) {
661
+ var isRequired = _ref12.isRequired;
662
+ var schema = yup__namespace.array().of(yup__namespace.object().shape({
663
+ value: yup__namespace.string().email(getInvalidFieldError("Email")).trim()
664
+ })).nullable();
665
+ if (isRequired) {
666
+ schema = schema.compact().min(1, getSelectMinError("an", t("neetoForm.common.email")));
667
+ }
668
+ return schema;
669
+ };
670
+ var editorHasValue = function editorHasValue(content) {
671
+ return !utils$1.isEditorEmpty(content);
672
+ };
673
+ var validateRichTextField = function validateRichTextField(_ref13) {
674
+ var isRequired = _ref13.isRequired;
675
+ var schema = yup__namespace.string();
676
+ if (isRequired) {
677
+ schema = schema.test("required", getRequiredFieldError("content"), editorHasValue);
678
+ }
679
+ return schema.trim();
680
+ };
681
+ var validateFileUploadField = function validateFileUploadField(_ref14) {
682
+ var isRequired = _ref14.isRequired,
683
+ multipleFilesAllowed = _ref14.multipleFilesAllowed;
684
+ var files_schema = yup__namespace.array();
685
+ if (isRequired) {
686
+ files_schema = files_schema.of(yup__namespace.object().shape({
687
+ name: yup__namespace.string(),
688
+ signedId: yup__namespace.string().required(t("neetoForm.fileUpload.validations.waitForUpload")),
689
+ url: yup__namespace.string().required(t("neetoForm.fileUpload.validations.waitForUpload"))
690
+ })).unique("name", t("neetoForm.fileUpload.validations.removeDuplicates")).min(1, multipleFilesAllowed ? t("neetoForm.fileUpload.validations.atLeastOneFileRequired") : t("neetoForm.fileUpload.validations.fileIsRequired"));
691
+ }
692
+ return yup__namespace.object().shape({
693
+ files: files_schema
694
+ });
695
+ };
696
+ var validateCaptchaField = function validateCaptchaField(_ref15) {
697
+ var variant = _ref15.variant;
698
+ return variant === constants$1.CAPTCHA_TYPES.MATH_CAPTCHA ? yup__namespace.mixed().test("verification failed", t("neetoForm.error.captchaVerificationFailed"), function (value) {
699
+ return neetoCist.isNotPresent(value) || value;
700
+ }).transform(function (value) {
701
+ return value === "" ? null : value;
702
+ }).required(t("neetoForm.error.incompleteCaptcha")) : yup__namespace.string().trim().required(t("neetoForm.error.incompleteCaptcha"));
703
+ };
704
+ var fieldKindValidatorMap = (_fieldKindValidatorMa = {}, _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.EMAIL.value, validateEmailField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.NAME.value, validateNameField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.PHONE.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.TEXT.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.QUESTION.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.TEXTAREA.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.DECIMAL.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.INTEGER.value, validateTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.DROPDOWN.value, validateSingleChoiceField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.RADIO.value, validateSingleChoiceField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.CHECKBOX.value, validateMultiChoiceField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.RATING.value, validateRatingField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.TERMS.value, validateTermsField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.DATE.value, validateDateField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.STAR_RATING.value, validateStarRatingField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.ADDITIONAL_GUESTS.value, validateMultiEmailField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.RICH_TEXT.value, validateRichTextField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.CONDITION.value, validateConditionField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.FILE_UPLOAD.value, validateFileUploadField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.CAPTCHA.value, validateCaptchaField), _defineProperty__default["default"](_fieldKindValidatorMa, constants.QUESTION_KIND.SMS_REMINDER.value, validateTextField), _fieldKindValidatorMa);
705
+ var validateFieldValue = function validateFieldValue(_ref16) {
706
+ var kind = _ref16.kind,
707
+ customValidator = _ref16.customValidator,
708
+ otherProps = _objectWithoutProperties__default["default"](_ref16, _excluded$4);
709
+ return function (value) {
710
+ if (!(kind in fieldKindValidatorMap)) return;
711
+ var validator = fieldKindValidatorMap[kind];
712
+ var schema = customValidator || validator(_objectSpread$f({
713
+ kind: kind
714
+ }, otherProps));
715
+
716
+ // eslint-disable-next-line consistent-return, no-async-promise-executor
717
+ return new Promise( /*#__PURE__*/function () {
718
+ var _ref17 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(resolve) {
719
+ return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
720
+ while (1) switch (_context.prev = _context.next) {
721
+ case 0:
722
+ _context.prev = 0;
723
+ _context.next = 3;
724
+ return schema.validate(value);
725
+ case 3:
726
+ resolve(undefined);
727
+ _context.next = 9;
728
+ break;
729
+ case 6:
730
+ _context.prev = 6;
731
+ _context.t0 = _context["catch"](0);
732
+ resolve(_context.t0.message);
733
+ case 9:
734
+ case "end":
735
+ return _context.stop();
736
+ }
737
+ }, _callee, null, [[0, 6]]);
738
+ }));
739
+ return function (_x) {
740
+ return _ref17.apply(this, arguments);
741
+ };
742
+ }());
743
+ };
744
+ };
745
+
746
+ var MultipleEmailInput = function MultipleEmailInput(_ref) {
747
+ var _jsx2;
748
+ var question = _ref.question,
749
+ customValidator = _ref.customValidator;
750
+ var name = question.id,
751
+ kind = question.kind,
752
+ isRequired = question.isRequired,
753
+ nodeId = question.nodeId;
754
+ var label = index.fieldWithFallback(question, "label");
755
+ var _useTranslation = reactI18next.useTranslation(),
756
+ t = _useTranslation.t;
757
+ var _useField = formik.useField({
758
+ name: name || nodeId,
759
+ validate: validateFieldValue({
760
+ kind: kind,
761
+ label: label,
762
+ isRequired: isRequired,
763
+ customValidator: customValidator
764
+ })
765
+ }),
766
+ _useField2 = _slicedToArray__default["default"](_useField, 3),
767
+ field = _useField2[0],
768
+ meta = _useField2[1],
769
+ _useField2$ = _useField2[2],
770
+ setValue = _useField2$.setValue,
771
+ setTouched = _useField2$.setTouched;
772
+ var _useState = React.useState(neetoCist.isPresent(field.value)),
773
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
774
+ isInputVisible = _useState2[0],
775
+ setIsInputVisible = _useState2[1];
776
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
777
+ className: "neeto-form-engine-input__wrapper",
778
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
779
+ className: "neeto-ui-w-full",
780
+ children: isInputVisible ? /*#__PURE__*/jsxRuntime.jsx(NeetoUIMultiEmailInput__default["default"], {
781
+ isRequired: isRequired,
782
+ label: label,
783
+ error: meta.touched ? meta.error : "",
784
+ helpText: t("neetoForm.common.addGuestsHelper"),
785
+ name: field.name,
786
+ placeholder: index.fieldWithFallback(question, "placeholder"),
787
+ value: field.value,
788
+ onBlur: function onBlur() {
789
+ return setTouched(true);
790
+ },
791
+ onChange: setValue
792
+ }) : /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], (_jsx2 = {
793
+ label: label
794
+ }, _defineProperty__default["default"](_jsx2, "label", t("neetoForm.common.addGuests")), _defineProperty__default["default"](_jsx2, "style", "secondary"), _defineProperty__default["default"](_jsx2, "onClick", function onClick() {
795
+ return setIsInputVisible(true);
796
+ }), _jsx2))
797
+ })
798
+ });
799
+ };
798
800
 
799
801
  var CaptchaField = function CaptchaField(_ref) {
800
802
  var question = _ref.question,
@@ -2168,7 +2170,7 @@ var QUESTION_TO_COMPONENT_MAP = (_QUESTION_TO_COMPONEN = {}, _defineProperty__de
2168
2170
  return /*#__PURE__*/jsxRuntime.jsx(EditorContent__default["default"], {
2169
2171
  content: index.fieldWithFallback(question, "label", true)
2170
2172
  });
2171
- }), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.TERMS.value, TermsField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.DATE.value, DateField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.STAR_RATING.value, StarRatingField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.ADDITIONAL_GUESTS.value, MultipleEmailInput), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.RICH_TEXT.value, RichTextEditor), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.CONDITION.value, ConditionField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.FILE_UPLOAD.value, FileUploadField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.CAPTCHA.value, CaptchaField), _QUESTION_TO_COMPONEN);
2173
+ }), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.TERMS.value, TermsField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.DATE.value, DateField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.STAR_RATING.value, StarRatingField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.ADDITIONAL_GUESTS.value, MultipleEmailInput), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.RICH_TEXT.value, RichTextEditor), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.CONDITION.value, ConditionField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.FILE_UPLOAD.value, FileUploadField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.CAPTCHA.value, CaptchaField), _defineProperty__default["default"](_QUESTION_TO_COMPONEN, constants.QUESTION_KIND.SMS_REMINDER.value, PhoneNumberField), _QUESTION_TO_COMPONEN);
2172
2174
  var CAPTCHA_COMPONENT_MAP = (_CAPTCHA_COMPONENT_MA = {}, _defineProperty__default["default"](_CAPTCHA_COMPONENT_MA, constants$1.CAPTCHA_TYPES.RECAPTCHA_V2, Recaptcha), _defineProperty__default["default"](_CAPTCHA_COMPONENT_MA, constants$1.CAPTCHA_TYPES.MATH_CAPTCHA, MathCaptcha), _CAPTCHA_COMPONENT_MA);
2173
2175
 
2174
2176
  var getFieldComponent = function getFieldComponent(_ref) {
@@ -2205,4 +2207,4 @@ exports.getFieldComponent = getFieldComponent;
2205
2207
  exports.getWithExpiry = getWithExpiry;
2206
2208
  exports.mergeRefs = mergeRefs;
2207
2209
  exports.renderButtonsInOrder = renderButtonsInOrder;
2208
- //# sourceMappingURL=utils-3fcf4c2b.js.map
2210
+ //# sourceMappingURL=utils-b26ce7e8.js.map