@bigbinary/neeto-form-frontend 4.4.6 → 4.4.8

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 (54) hide show
  1. package/README.md +4 -1
  2. package/app/javascript/src/translations/en.json +10 -1
  3. package/dist/BuildForm.js +51 -9
  4. package/dist/BuildForm.js.map +1 -1
  5. package/dist/ExternalForm.js +19 -11
  6. package/dist/ExternalForm.js.map +1 -1
  7. package/dist/Submission.js +1 -1
  8. package/dist/UrlBuilder.js +12 -4
  9. package/dist/UrlBuilder.js.map +1 -1
  10. package/dist/{buildForm-D-epUrZG.js → buildForm-CrOWLvLE.js} +2 -2
  11. package/dist/{buildForm-D-epUrZG.js.map → buildForm-CrOWLvLE.js.map} +1 -1
  12. package/dist/{buildForm-CgofRtEN.js → buildForm-DfMpfuSp.js} +2 -2
  13. package/dist/{buildForm-CgofRtEN.js.map → buildForm-DfMpfuSp.js.map} +1 -1
  14. package/dist/cjs/BuildForm.js +51 -9
  15. package/dist/cjs/BuildForm.js.map +1 -1
  16. package/dist/cjs/ExternalForm.js +19 -11
  17. package/dist/cjs/ExternalForm.js.map +1 -1
  18. package/dist/cjs/Submission.js +1 -1
  19. package/dist/cjs/UrlBuilder.js +12 -4
  20. package/dist/cjs/UrlBuilder.js.map +1 -1
  21. package/dist/cjs/hooks.js +4 -4
  22. package/dist/cjs/index.js +8 -7
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/{constants-BNfHPNOx.js → constants-Cj0XxE8a.js} +2 -1
  25. package/dist/constants-Cj0XxE8a.js.map +1 -0
  26. package/dist/{constants-CfUZ9B6N.js → constants-D5JlvWws.js} +2 -1
  27. package/dist/constants-D5JlvWws.js.map +1 -0
  28. package/dist/hooks.js +4 -4
  29. package/dist/{index-0m1EzLFY.js → index-Beo6ztaM.js} +2 -2
  30. package/dist/{index-0m1EzLFY.js.map → index-Beo6ztaM.js.map} +1 -1
  31. package/dist/{index-y4GiXx7o.js → index-DhtQJpD_.js} +2 -2
  32. package/dist/{index-y4GiXx7o.js.map → index-DhtQJpD_.js.map} +1 -1
  33. package/dist/index.js +8 -7
  34. package/dist/index.js.map +1 -1
  35. package/dist/{useFormSubmission-DyS5Dm1q.js → useFormSubmission-D3O7sDHp.js} +2 -2
  36. package/dist/{useFormSubmission-DyS5Dm1q.js.map → useFormSubmission-D3O7sDHp.js.map} +1 -1
  37. package/dist/{useFormSubmission-Cx63P761.js → useFormSubmission-PLRMfzJ3.js} +2 -2
  38. package/dist/{useFormSubmission-Cx63P761.js.map → useFormSubmission-PLRMfzJ3.js.map} +1 -1
  39. package/dist/{utils-C9nDMm4c.js → utils-CI844li1.js} +112 -46
  40. package/dist/utils-CI844li1.js.map +1 -0
  41. package/dist/{utils-DEBFghm4.js → utils-baAzU7l8.js} +112 -46
  42. package/dist/utils-baAzU7l8.js.map +1 -0
  43. package/dist/{yup-Dx1WK2_p.js → yup-CSYHMEsr.js} +26 -7
  44. package/dist/yup-CSYHMEsr.js.map +1 -0
  45. package/dist/{yup-CMEoabdy.js → yup-DMlViLLB.js} +27 -6
  46. package/dist/yup-DMlViLLB.js.map +1 -0
  47. package/package.json +5 -5
  48. package/types.d.ts +1 -0
  49. package/dist/constants-BNfHPNOx.js.map +0 -1
  50. package/dist/constants-CfUZ9B6N.js.map +0 -1
  51. package/dist/utils-C9nDMm4c.js.map +0 -1
  52. package/dist/utils-DEBFghm4.js.map +0 -1
  53. package/dist/yup-CMEoabdy.js.map +0 -1
  54. package/dist/yup-Dx1WK2_p.js.map +0 -1
@@ -3,13 +3,13 @@
3
3
  var React = require('react');
4
4
  var formik = require('formik');
5
5
  var neetoCist = require('@bigbinary/neeto-cist');
6
- var index = require('./index-0m1EzLFY.js');
6
+ var index = require('./index-Beo6ztaM.js');
7
7
  var utils = require('@bigbinary/neeto-commons-frontend/utils');
8
8
  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 = require('./constants-CfUZ9B6N.js');
12
+ var constants = require('./constants-D5JlvWws.js');
13
13
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
14
14
  var Plus = require('@bigbinary/neeto-icons/Plus');
15
15
  var Button = require('@bigbinary/neetoui/Button');
@@ -22,7 +22,7 @@ var utils$1 = require('@bigbinary/neeto-editor/utils');
22
22
  var PhoneNumber = require('@bigbinary/neeto-molecules/PhoneNumber');
23
23
  var i18next = require('i18next');
24
24
  var jsxRuntime = require('react/jsx-runtime');
25
- var yup = require('./yup-CMEoabdy.js');
25
+ var yup = require('./yup-DMlViLLB.js');
26
26
  var _toArray = require('@babel/runtime/helpers/toArray');
27
27
  var yup$1 = require('yup');
28
28
  var classnames = require('classnames');
@@ -46,7 +46,9 @@ var Label = require('@bigbinary/neetoui/Label');
46
46
  var Radio = require('@bigbinary/neetoui/Radio');
47
47
  var Image = require('@bigbinary/neeto-icons/Image');
48
48
  var NeetoEditor = require('@bigbinary/neeto-editor/Editor');
49
+ var Info = require('@bigbinary/neeto-icons/Info');
49
50
  var Textarea = require('@bigbinary/neetoui/Textarea');
51
+ var Tag = require('@bigbinary/neetoui/Tag');
50
52
 
51
53
  function _interopNamespaceDefault(e) {
52
54
  var n = Object.create(null);
@@ -360,6 +362,11 @@ var getNameFromUrl = function getNameFromUrl(_ref7, fieldCodes) {
360
362
  lastName: lastName
361
363
  };
362
364
  };
365
+ var isValidSpotValue = function isValidSpotValue(value, remainingSlotsCount) {
366
+ var num = Number(value);
367
+ if (!Number.isInteger(num) || num <= 0) return false;
368
+ return !(typeof remainingSlotsCount === "number" && remainingSlotsCount >= 0 && num > remainingSlotsCount);
369
+ };
363
370
  var buildEmailVerificationEntries = function buildEmailVerificationEntries() {
364
371
  var questions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
365
372
  var emailQuestionsRequiringVerification = neetoCist.filterBy({
@@ -382,7 +389,8 @@ var generateInitValues = function generateInitValues(_ref9) {
382
389
  _ref9$localValues = _ref9.localValues,
383
390
  localValues = _ref9$localValues === void 0 ? {} : _ref9$localValues,
384
391
  _ref9$fieldCodes = _ref9.fieldCodes,
385
- fieldCodes = _ref9$fieldCodes === void 0 ? {} : _ref9$fieldCodes;
392
+ fieldCodes = _ref9$fieldCodes === void 0 ? {} : _ref9$fieldCodes,
393
+ remainingSlotsCount = _ref9.remainingSlotsCount;
386
394
  var initValues = {};
387
395
  var valuesMap = {};
388
396
  if (initialValues) {
@@ -435,21 +443,35 @@ var generateInitValues = function generateInitValues(_ref9) {
435
443
  case yup.QUESTION_KIND.DROPDOWN.value:
436
444
  {
437
445
  var _optionsAttributes$fi;
438
- initValues[id] = ((_optionsAttributes$fi = optionsAttributes.find(function (option) {
446
+ var optionFromValues = optionsAttributes === null || optionsAttributes === void 0 || (_optionsAttributes$fi = optionsAttributes.find(function (option) {
439
447
  var _valuesMap$id3;
440
448
  return (_valuesMap$id3 = valuesMap[id]) === null || _valuesMap$id3 === void 0 || (_valuesMap$id3 = _valuesMap$id3.optionIds) === null || _valuesMap$id3 === void 0 ? void 0 : _valuesMap$id3.includes(option.id);
441
- })) === null || _optionsAttributes$fi === void 0 ? void 0 : _optionsAttributes$fi.id) || getOptionFromURL({
449
+ })) === null || _optionsAttributes$fi === void 0 ? void 0 : _optionsAttributes$fi.id;
450
+ var optionFromUrl = getOptionFromURL({
442
451
  optionsAttributes: optionsAttributes,
443
452
  fieldCodes: fieldCodes,
444
453
  fieldCode: fieldCode
445
454
  });
455
+ initValues[id] = optionFromValues || optionFromUrl;
456
+ return;
457
+ }
458
+ case yup.QUESTION_KIND.SPOT.value:
459
+ {
460
+ var _valuesMap$id$value2, _valuesMap3;
461
+ var urlValue = getNumberFromUrl({
462
+ fieldCodes: fieldCodes,
463
+ fieldCode: fieldCode,
464
+ kind: yup.QUESTION_KIND.INTEGER.value
465
+ });
466
+ var candidateValue = (_valuesMap$id$value2 = (_valuesMap3 = valuesMap) === null || _valuesMap3 === void 0 || (_valuesMap3 = _valuesMap3[id]) === null || _valuesMap3 === void 0 ? void 0 : _valuesMap3.value) !== null && _valuesMap$id$value2 !== void 0 ? _valuesMap$id$value2 : urlValue !== "" ? urlValue : yup.SPOT_QUESTION_DEFAULT_VALUE;
467
+ initValues[id] = isValidSpotValue(candidateValue, remainingSlotsCount) ? candidateValue : yup.SPOT_QUESTION_DEFAULT_VALUE;
446
468
  return;
447
469
  }
448
470
  case yup.QUESTION_KIND.INTEGER.value:
449
471
  case yup.QUESTION_KIND.DECIMAL.value:
450
472
  {
451
- var _valuesMap3;
452
- initValues[id] = ((_valuesMap3 = valuesMap) === null || _valuesMap3 === void 0 || (_valuesMap3 = _valuesMap3[id]) === null || _valuesMap3 === void 0 ? void 0 : _valuesMap3.value) || getNumberFromUrl({
473
+ var _valuesMap4;
474
+ initValues[id] = ((_valuesMap4 = valuesMap) === null || _valuesMap4 === void 0 || (_valuesMap4 = _valuesMap4[id]) === null || _valuesMap4 === void 0 ? void 0 : _valuesMap4.value) || getNumberFromUrl({
453
475
  fieldCodes: fieldCodes,
454
476
  fieldCode: fieldCode,
455
477
  kind: kind
@@ -458,8 +480,8 @@ var generateInitValues = function generateInitValues(_ref9) {
458
480
  }
459
481
  case yup.QUESTION_KIND.RATING.value:
460
482
  {
461
- var _valuesMap4;
462
- initValues[id] = ((_valuesMap4 = valuesMap) === null || _valuesMap4 === void 0 || (_valuesMap4 = _valuesMap4[id]) === null || _valuesMap4 === void 0 ? void 0 : _valuesMap4.value) || getRatingFromUrl({
483
+ var _valuesMap5;
484
+ initValues[id] = ((_valuesMap5 = valuesMap) === null || _valuesMap5 === void 0 || (_valuesMap5 = _valuesMap5[id]) === null || _valuesMap5 === void 0 ? void 0 : _valuesMap5.value) || getRatingFromUrl({
463
485
  fieldCodes: fieldCodes,
464
486
  fieldCode: fieldCode
465
487
  });
@@ -472,24 +494,24 @@ var generateInitValues = function generateInitValues(_ref9) {
472
494
  }
473
495
  case yup.QUESTION_KIND.FILE_UPLOAD.value:
474
496
  {
475
- var _valuesMap$id$value2, _valuesMap5;
497
+ var _valuesMap$id$value3, _valuesMap6;
476
498
  initValues[id] = {
477
- files: (_valuesMap$id$value2 = (_valuesMap5 = valuesMap) === null || _valuesMap5 === void 0 || (_valuesMap5 = _valuesMap5[id]) === null || _valuesMap5 === void 0 ? void 0 : _valuesMap5.value) !== null && _valuesMap$id$value2 !== void 0 ? _valuesMap$id$value2 : []
499
+ files: (_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 : []
478
500
  };
479
501
  return;
480
502
  }
481
503
  case yup.QUESTION_KIND.PHONE.value:
482
504
  case yup.QUESTION_KIND.SMS_REMINDER.value:
483
505
  {
484
- var _valuesMap$id$value3, _valuesMap6;
485
- 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);
506
+ var _valuesMap$id$value4, _valuesMap7;
507
+ initValues[id] = (_valuesMap$id$value4 = (_valuesMap7 = valuesMap) === null || _valuesMap7 === void 0 || (_valuesMap7 = _valuesMap7[id]) === null || _valuesMap7 === void 0 ? void 0 : _valuesMap7.value) !== null && _valuesMap$id$value4 !== void 0 ? _valuesMap$id$value4 : getPhoneNumberFromUrl(fieldCodes, fieldCode);
486
508
  return;
487
509
  }
488
510
  case yup.QUESTION_KIND.STAR_RATING.value:
489
511
  case yup.QUESTION_KIND.OPINION_SCALE.value:
490
512
  {
491
- var _valuesMap$id$value4, _valuesMap7;
492
- initValues[id] = (_valuesMap$id$value4 = (_valuesMap7 = valuesMap) === null || _valuesMap7 === void 0 || (_valuesMap7 = _valuesMap7[id]) === null || _valuesMap7 === void 0 ? void 0 : _valuesMap7.value) !== null && _valuesMap$id$value4 !== void 0 ? _valuesMap$id$value4 : getStarRatingOrOpinionScaleFromUrl({
513
+ var _valuesMap$id$value5, _valuesMap8;
514
+ initValues[id] = (_valuesMap$id$value5 = (_valuesMap8 = valuesMap) === null || _valuesMap8 === void 0 || (_valuesMap8 = _valuesMap8[id]) === null || _valuesMap8 === void 0 ? void 0 : _valuesMap8.value) !== null && _valuesMap$id$value5 !== void 0 ? _valuesMap$id$value5 : getStarRatingOrOpinionScaleFromUrl({
493
515
  minValue: minValue,
494
516
  maxValue: maxValue,
495
517
  fieldCodes: fieldCodes,
@@ -499,14 +521,14 @@ var generateInitValues = function generateInitValues(_ref9) {
499
521
  }
500
522
  case yup.QUESTION_KIND.NAME.value:
501
523
  {
502
- var _valuesMap$id$value5, _valuesMap8;
503
- initValues[id] = (_valuesMap$id$value5 = (_valuesMap8 = valuesMap) === null || _valuesMap8 === void 0 || (_valuesMap8 = _valuesMap8[id]) === null || _valuesMap8 === void 0 ? void 0 : _valuesMap8.value) !== null && _valuesMap$id$value5 !== void 0 ? _valuesMap$id$value5 : getNameFromUrl(question, fieldCodes);
524
+ var _valuesMap$id$value6, _valuesMap9;
525
+ initValues[id] = (_valuesMap$id$value6 = (_valuesMap9 = valuesMap) === null || _valuesMap9 === void 0 || (_valuesMap9 = _valuesMap9[id]) === null || _valuesMap9 === void 0 ? void 0 : _valuesMap9.value) !== null && _valuesMap$id$value6 !== void 0 ? _valuesMap$id$value6 : getNameFromUrl(question, fieldCodes);
504
526
  return;
505
527
  }
506
528
  case yup.QUESTION_KIND.ADDRESS.value:
507
529
  {
508
- var _valuesMap$id$value6, _valuesMap9;
509
- initValues[id] = (_valuesMap$id$value6 = (_valuesMap9 = valuesMap) === null || _valuesMap9 === void 0 || (_valuesMap9 = _valuesMap9[id]) === null || _valuesMap9 === void 0 ? void 0 : _valuesMap9.value) !== null && _valuesMap$id$value6 !== void 0 ? _valuesMap$id$value6 : fields.reduce(function (values, field) {
530
+ var _valuesMap$id$value7, _valuesMap10;
531
+ initValues[id] = (_valuesMap$id$value7 = (_valuesMap10 = valuesMap) === null || _valuesMap10 === void 0 || (_valuesMap10 = _valuesMap10[id]) === null || _valuesMap10 === void 0 ? void 0 : _valuesMap10.value) !== null && _valuesMap$id$value7 !== void 0 ? _valuesMap$id$value7 : fields.reduce(function (values, field) {
510
532
  values[field.id] = "";
511
533
  return values;
512
534
  }, {});
@@ -514,8 +536,8 @@ var generateInitValues = function generateInitValues(_ref9) {
514
536
  }
515
537
  default:
516
538
  {
517
- var _valuesMap$id$value7, _valuesMap10;
518
- initValues[id] = (_valuesMap$id$value7 = (_valuesMap10 = valuesMap) === null || _valuesMap10 === void 0 || (_valuesMap10 = _valuesMap10[id]) === null || _valuesMap10 === void 0 ? void 0 : _valuesMap10.value) !== null && _valuesMap$id$value7 !== void 0 ? _valuesMap$id$value7 : resolveQueryParamValue(fieldCodes[fieldCode] || "");
539
+ var _valuesMap$id$value8, _valuesMap11;
540
+ initValues[id] = (_valuesMap$id$value8 = (_valuesMap11 = valuesMap) === null || _valuesMap11 === void 0 || (_valuesMap11 = _valuesMap11[id]) === null || _valuesMap11 === void 0 ? void 0 : _valuesMap11.value) !== null && _valuesMap$id$value8 !== void 0 ? _valuesMap$id$value8 : resolveQueryParamValue(fieldCodes[fieldCode] || "");
519
541
  return;
520
542
  }
521
543
  }
@@ -541,6 +563,12 @@ var generateFormResponse = function generateFormResponse(response, questions) {
541
563
  kind: kind
542
564
  });
543
565
  }
566
+ } else if (kind === yup.QUESTION_KIND.SPOT.value) {
567
+ formResponse.push({
568
+ questionId: id,
569
+ value: responseValue,
570
+ kind: kind
571
+ });
544
572
  } else if (kind === yup.QUESTION_KIND.CHECKBOX.value) {
545
573
  responseValue.forEach(function (isChecked, index) {
546
574
  if (!isChecked) return;
@@ -646,12 +674,30 @@ var isEmailFromBlacklistedDomain = function isEmailFromBlacklistedDomain(email,
646
674
  var validateTextField = function validateTextField(_ref) {
647
675
  var kind = _ref.kind,
648
676
  label = _ref.label,
649
- isRequired = _ref.isRequired;
677
+ isRequired = _ref.isRequired,
678
+ remainingSlotsCount = _ref.remainingSlotsCount;
650
679
  var schema = yup__namespace.string().typeError(getInvalidTypeError(label, "string"));
651
680
  if (isPhoneNumberField(kind)) {
652
681
  schema = PhoneNumber.validation(getInvalidFieldError(t("neetoForm.common.phoneNumberValidation")));
653
682
  }
654
- if (isRequired) schema = schema.trim().required(getRequiredFieldError(label));
683
+ var requiredError = kind === yup.QUESTION_KIND.SPOT.value ? t("neetoForm.questions.spot.numberOfSpotsRequired") : getRequiredFieldError(label);
684
+ if (isRequired) schema = schema.trim().required(requiredError);
685
+ if (kind === yup.QUESTION_KIND.SPOT.value) {
686
+ schema = schema.test("integer-spots", t("neetoForm.questions.spot.mustBeInteger"), function (value) {
687
+ return neetoCist.isNotPresent(value) || value === "" || Number.isInteger(Number(value));
688
+ }).test("min-spots", t("neetoForm.error.mustBeOrGreaterThanOrEqualTo", {
689
+ value: 1
690
+ }), function (value) {
691
+ return neetoCist.isNotPresent(value) || value === "" || Number(value) > 0;
692
+ });
693
+ if (typeof remainingSlotsCount === "number" && remainingSlotsCount >= 0) {
694
+ schema = schema.test("max-spots", t("neetoForm.questions.spot.exceedsRemainingSpots", {
695
+ count: remainingSlotsCount
696
+ }), function (value) {
697
+ return neetoCist.isNotPresent(value) || value === "" || Number(value) > 0 && Number(value) <= remainingSlotsCount;
698
+ });
699
+ }
700
+ }
655
701
  return schema.trim();
656
702
  };
657
703
  var validateEmailField = function validateEmailField(_ref2) {
@@ -787,7 +833,7 @@ var validateCaptchaField = function validateCaptchaField(_ref17) {
787
833
  return value === "" ? null : value;
788
834
  }).required(t("neetoForm.error.incompleteCaptcha")) : yup__namespace.string().trim().required(t("neetoForm.error.incompleteCaptcha"));
789
835
  };
790
- var fieldKindValidatorMap = (_fieldKindValidatorMa = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_fieldKindValidatorMa, yup.QUESTION_KIND.EMAIL.value, validateEmailField), yup.QUESTION_KIND.NAME.value, validateNameField), yup.QUESTION_KIND.PHONE.value, validateTextField), yup.QUESTION_KIND.TEXT.value, validateTextField), yup.QUESTION_KIND.QUESTION.value, validateTextField), yup.QUESTION_KIND.TEXTAREA.value, validateTextField), yup.QUESTION_KIND.DECIMAL.value, validateTextField), yup.QUESTION_KIND.INTEGER.value, validateTextField), yup.QUESTION_KIND.DROPDOWN.value, validateSingleChoiceField), yup.QUESTION_KIND.RADIO.value, validateSingleChoiceField), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_fieldKindValidatorMa, yup.QUESTION_KIND.CHECKBOX.value, validateMultiChoiceField), yup.QUESTION_KIND.RATING.value, validateRatingField), yup.QUESTION_KIND.TERMS.value, validateTermsField), yup.QUESTION_KIND.DATE.value, validateDateField), yup.QUESTION_KIND.STAR_RATING.value, validateStarRatingField), yup.QUESTION_KIND.OPINION_SCALE.value, validateOpinionScaleField), yup.QUESTION_KIND.ADDITIONAL_GUESTS.value, validateMultiEmailField), yup.QUESTION_KIND.RICH_TEXT.value, validateRichTextField), yup.QUESTION_KIND.CONDITION.value, validateConditionField), yup.QUESTION_KIND.FILE_UPLOAD.value, validateFileUploadField), _defineProperty(_defineProperty(_defineProperty(_fieldKindValidatorMa, yup.QUESTION_KIND.CAPTCHA.value, validateCaptchaField), yup.QUESTION_KIND.SMS_REMINDER.value, validateTextField), yup.QUESTION_KIND.ADDRESS.value, validateAddressField));
836
+ var fieldKindValidatorMap = (_fieldKindValidatorMa = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_fieldKindValidatorMa, yup.QUESTION_KIND.EMAIL.value, validateEmailField), yup.QUESTION_KIND.NAME.value, validateNameField), yup.QUESTION_KIND.PHONE.value, validateTextField), yup.QUESTION_KIND.TEXT.value, validateTextField), yup.QUESTION_KIND.QUESTION.value, validateTextField), yup.QUESTION_KIND.TEXTAREA.value, validateTextField), yup.QUESTION_KIND.DECIMAL.value, validateTextField), yup.QUESTION_KIND.INTEGER.value, validateTextField), yup.QUESTION_KIND.DROPDOWN.value, validateSingleChoiceField), yup.QUESTION_KIND.RADIO.value, validateSingleChoiceField), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_fieldKindValidatorMa, yup.QUESTION_KIND.SPOT.value, validateTextField), yup.QUESTION_KIND.CHECKBOX.value, validateMultiChoiceField), yup.QUESTION_KIND.RATING.value, validateRatingField), yup.QUESTION_KIND.TERMS.value, validateTermsField), yup.QUESTION_KIND.DATE.value, validateDateField), yup.QUESTION_KIND.STAR_RATING.value, validateStarRatingField), yup.QUESTION_KIND.OPINION_SCALE.value, validateOpinionScaleField), yup.QUESTION_KIND.ADDITIONAL_GUESTS.value, validateMultiEmailField), yup.QUESTION_KIND.RICH_TEXT.value, validateRichTextField), yup.QUESTION_KIND.CONDITION.value, validateConditionField), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_fieldKindValidatorMa, yup.QUESTION_KIND.FILE_UPLOAD.value, validateFileUploadField), yup.QUESTION_KIND.CAPTCHA.value, validateCaptchaField), yup.QUESTION_KIND.SMS_REMINDER.value, validateTextField), yup.QUESTION_KIND.ADDRESS.value, validateAddressField));
791
837
  var validateFieldValue = function validateFieldValue(_ref18) {
792
838
  var kind = _ref18.kind,
793
839
  customValidator = _ref18.customValidator,
@@ -2576,7 +2622,10 @@ var TextField = function TextField(_ref) {
2576
2622
  var _otherProps$onChange;
2577
2623
  var question = _ref.question,
2578
2624
  customValidator = _ref.customValidator,
2579
- autoComplete = _ref.autoComplete;
2625
+ autoComplete = _ref.autoComplete,
2626
+ remainingSlotsCount = _ref.remainingSlotsCount;
2627
+ var _useTranslation = reactI18next.useTranslation(),
2628
+ t = _useTranslation.t;
2580
2629
  var name = question.id,
2581
2630
  kind = question.kind,
2582
2631
  isRequired = question.isRequired,
@@ -2595,7 +2644,8 @@ var TextField = function TextField(_ref) {
2595
2644
  kind: kind,
2596
2645
  label: label,
2597
2646
  isRequired: isRequired,
2598
- customValidator: customValidator
2647
+ customValidator: customValidator,
2648
+ remainingSlotsCount: remainingSlotsCount
2599
2649
  })
2600
2650
  }),
2601
2651
  _useField2 = _slicedToArray(_useField, 3),
@@ -2607,23 +2657,39 @@ var TextField = function TextField(_ref) {
2607
2657
  setValue = _useField2$2.setValue,
2608
2658
  setTouched = _useField2$2.setTouched;
2609
2659
  var handleFieldChange = utils.withEventTargetValue(setValue);
2610
- return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({
2611
- type: type
2612
- }, field), {}, {
2613
- autoComplete: autoComplete,
2614
- label: label,
2615
- onKeyDown: onKeyDown
2616
- })), {}, {
2617
- disabled: isReadOnly,
2618
- error: touched ? error : "",
2619
- name: neetoCist.slugify(label),
2620
- placeholder: index.fieldWithFallback(question, "placeholder"),
2621
- required: isRequired,
2622
- onBlur: function onBlur() {
2623
- return setTouched(true);
2624
- },
2625
- onChange: (_otherProps$onChange = otherProps === null || otherProps === void 0 ? void 0 : otherProps.onChange(handleFieldChange)) !== null && _otherProps$onChange !== void 0 ? _otherProps$onChange : handleFieldChange
2626
- }));
2660
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
2661
+ className: "w-full flex flex-col gap-2",
2662
+ children: [/*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({
2663
+ type: type
2664
+ }, field), {}, {
2665
+ autoComplete: autoComplete,
2666
+ label: label,
2667
+ onKeyDown: onKeyDown
2668
+ }, kind === yup.QUESTION_KIND.SPOT.value && _objectSpread({
2669
+ min: 1
2670
+ }, typeof remainingSlotsCount === "number" && remainingSlotsCount >= 0 && {
2671
+ max: remainingSlotsCount
2672
+ }))), {}, {
2673
+ disabled: isReadOnly,
2674
+ error: touched ? error : "",
2675
+ name: neetoCist.slugify(label),
2676
+ placeholder: index.fieldWithFallback(question, "placeholder"),
2677
+ required: isRequired,
2678
+ onBlur: function onBlur() {
2679
+ return setTouched(true);
2680
+ },
2681
+ onChange: (_otherProps$onChange = otherProps === null || otherProps === void 0 ? void 0 : otherProps.onChange(handleFieldChange)) !== null && _otherProps$onChange !== void 0 ? _otherProps$onChange : handleFieldChange
2682
+ })), kind === yup.QUESTION_KIND.SPOT.value && typeof remainingSlotsCount === "number" && remainingSlotsCount >= 0 && /*#__PURE__*/jsxRuntime.jsx("div", {
2683
+ className: "flex justify-end",
2684
+ children: /*#__PURE__*/jsxRuntime.jsx(Tag, {
2685
+ icon: Info,
2686
+ style: "info",
2687
+ label: t("neetoForm.questions.spot.remainingSlotsCount", {
2688
+ count: remainingSlotsCount
2689
+ })
2690
+ })
2691
+ })]
2692
+ });
2627
2693
  };
2628
2694
 
2629
2695
  var _QUESTION_TO_COMPONEN;
@@ -2632,7 +2698,7 @@ var QUESTION_TO_COMPONENT_MAP = (_QUESTION_TO_COMPONEN = {}, _defineProperty(_de
2632
2698
  return /*#__PURE__*/jsxRuntime.jsx(EditorContent, {
2633
2699
  content: index.fieldWithFallback(question, "label", true)
2634
2700
  });
2635
- }), yup.QUESTION_KIND.TERMS.value, TermsField), yup.QUESTION_KIND.DATE.value, DateField), yup.QUESTION_KIND.STAR_RATING.value, StarRatingField), yup.QUESTION_KIND.OPINION_SCALE.value, OpinionScaleField), yup.QUESTION_KIND.ADDITIONAL_GUESTS.value, MultipleEmailInput), yup.QUESTION_KIND.RICH_TEXT.value, RichTextEditor), yup.QUESTION_KIND.CONDITION.value, ConditionField), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_QUESTION_TO_COMPONEN, yup.QUESTION_KIND.FILE_UPLOAD.value, FileUploadField), yup.QUESTION_KIND.CAPTCHA.value, CaptchaField), yup.QUESTION_KIND.SMS_REMINDER.value, PhoneNumberField), yup.QUESTION_KIND.ADDRESS.value, AddressField));
2701
+ }), yup.QUESTION_KIND.TERMS.value, TermsField), yup.QUESTION_KIND.DATE.value, DateField), yup.QUESTION_KIND.STAR_RATING.value, StarRatingField), yup.QUESTION_KIND.OPINION_SCALE.value, OpinionScaleField), yup.QUESTION_KIND.ADDITIONAL_GUESTS.value, MultipleEmailInput), yup.QUESTION_KIND.RICH_TEXT.value, RichTextEditor), yup.QUESTION_KIND.CONDITION.value, ConditionField), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_QUESTION_TO_COMPONEN, yup.QUESTION_KIND.FILE_UPLOAD.value, FileUploadField), yup.QUESTION_KIND.CAPTCHA.value, CaptchaField), yup.QUESTION_KIND.SMS_REMINDER.value, PhoneNumberField), yup.QUESTION_KIND.SPOT.value, TextField), yup.QUESTION_KIND.ADDRESS.value, AddressField));
2636
2702
  var CAPTCHA_COMPONENT_MAP = _defineProperty(_defineProperty({}, constants.CAPTCHA_TYPES.RECAPTCHA_V2, Recaptcha), constants.CAPTCHA_TYPES.MATH_CAPTCHA, MathCaptcha);
2637
2703
 
2638
2704
  var getFieldComponent = function getFieldComponent(_ref) {
@@ -2680,4 +2746,4 @@ exports.getFieldComponent = getFieldComponent;
2680
2746
  exports.getWithExpiry = getWithExpiry;
2681
2747
  exports.mergeRefs = mergeRefs;
2682
2748
  exports.renderButtonsInOrder = renderButtonsInOrder;
2683
- //# sourceMappingURL=utils-DEBFghm4.js.map
2749
+ //# sourceMappingURL=utils-baAzU7l8.js.map