@tellescope/react-components 1.168.0 → 1.170.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 (76) hide show
  1. package/lib/cjs/Forms/form_responses.js +1 -1
  2. package/lib/cjs/Forms/form_responses.js.map +1 -1
  3. package/lib/cjs/Forms/forms.d.ts +9 -2
  4. package/lib/cjs/Forms/forms.d.ts.map +1 -1
  5. package/lib/cjs/Forms/forms.js +50 -42
  6. package/lib/cjs/Forms/forms.js.map +1 -1
  7. package/lib/cjs/Forms/hooks.d.ts +7 -0
  8. package/lib/cjs/Forms/hooks.d.ts.map +1 -1
  9. package/lib/cjs/Forms/hooks.js +96 -68
  10. package/lib/cjs/Forms/hooks.js.map +1 -1
  11. package/lib/cjs/Forms/inputs.d.ts +3 -2
  12. package/lib/cjs/Forms/inputs.d.ts.map +1 -1
  13. package/lib/cjs/Forms/inputs.js +80 -25
  14. package/lib/cjs/Forms/inputs.js.map +1 -1
  15. package/lib/cjs/Forms/types.d.ts +7 -0
  16. package/lib/cjs/Forms/types.d.ts.map +1 -1
  17. package/lib/cjs/Forms/wysiwyg.d.ts +12 -0
  18. package/lib/cjs/Forms/wysiwyg.d.ts.map +1 -0
  19. package/lib/cjs/Forms/wysiwyg.js +225 -0
  20. package/lib/cjs/Forms/wysiwyg.js.map +1 -0
  21. package/lib/cjs/inputs.d.ts +1 -1
  22. package/lib/cjs/inputs.d.ts.map +1 -1
  23. package/lib/cjs/state.d.ts.map +1 -1
  24. package/lib/cjs/state.js +4 -0
  25. package/lib/cjs/state.js.map +1 -1
  26. package/lib/cjs/table.js +1 -1
  27. package/lib/cjs/table.js.map +1 -1
  28. package/lib/esm/CMS/components.d.ts +0 -1
  29. package/lib/esm/CMS/components.d.ts.map +1 -1
  30. package/lib/esm/Forms/form_responses.js +1 -1
  31. package/lib/esm/Forms/form_responses.js.map +1 -1
  32. package/lib/esm/Forms/forms.d.ts +12 -5
  33. package/lib/esm/Forms/forms.d.ts.map +1 -1
  34. package/lib/esm/Forms/forms.js +51 -43
  35. package/lib/esm/Forms/forms.js.map +1 -1
  36. package/lib/esm/Forms/hooks.d.ts +7 -0
  37. package/lib/esm/Forms/hooks.d.ts.map +1 -1
  38. package/lib/esm/Forms/hooks.js +96 -68
  39. package/lib/esm/Forms/hooks.js.map +1 -1
  40. package/lib/esm/Forms/inputs.d.ts +4 -3
  41. package/lib/esm/Forms/inputs.d.ts.map +1 -1
  42. package/lib/esm/Forms/inputs.js +78 -24
  43. package/lib/esm/Forms/inputs.js.map +1 -1
  44. package/lib/esm/Forms/inputs.native.d.ts +0 -1
  45. package/lib/esm/Forms/inputs.native.d.ts.map +1 -1
  46. package/lib/esm/Forms/types.d.ts +7 -0
  47. package/lib/esm/Forms/types.d.ts.map +1 -1
  48. package/lib/esm/Forms/wysiwyg.d.ts +12 -0
  49. package/lib/esm/Forms/wysiwyg.d.ts.map +1 -0
  50. package/lib/esm/Forms/wysiwyg.js +218 -0
  51. package/lib/esm/Forms/wysiwyg.js.map +1 -0
  52. package/lib/esm/controls.d.ts +2 -2
  53. package/lib/esm/inputs.d.ts +2 -2
  54. package/lib/esm/inputs.d.ts.map +1 -1
  55. package/lib/esm/inputs.native.d.ts +0 -1
  56. package/lib/esm/inputs.native.d.ts.map +1 -1
  57. package/lib/esm/layout.d.ts +1 -1
  58. package/lib/esm/state.d.ts +264 -264
  59. package/lib/esm/state.d.ts.map +1 -1
  60. package/lib/esm/state.js +4 -0
  61. package/lib/esm/state.js.map +1 -1
  62. package/lib/esm/table.js +1 -1
  63. package/lib/esm/table.js.map +1 -1
  64. package/lib/esm/theme.native.d.ts +0 -1
  65. package/lib/esm/theme.native.d.ts.map +1 -1
  66. package/lib/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +13 -9
  68. package/src/Forms/form_responses.tsx +1 -1
  69. package/src/Forms/forms.tsx +20 -2
  70. package/src/Forms/hooks.tsx +43 -26
  71. package/src/Forms/inputs.tsx +41 -9
  72. package/src/Forms/types.ts +4 -0
  73. package/src/Forms/wysiwyg.tsx +234 -0
  74. package/src/inputs.tsx +1 -1
  75. package/src/state.tsx +1 -0
  76. package/src/table.tsx +1 -1
@@ -490,8 +490,9 @@ var useTellescopeForm = function (_a) {
490
490
  var _k = (0, react_1.useState)(undefined), submittingStatus = _k[0], setSubmittingStatus = _k[1];
491
491
  var _l = (0, react_1.useState)(''), submitErrorMessage = _l[0], setSubmitErrorMessage = _l[1];
492
492
  var _m = (0, react_1.useState)(0), currentPageIndex = _m[0], setCurrentPageIndex = _m[1];
493
+ var _o = (0, react_1.useState)([]), uploadingFiles = _o[0], setUploadingFiles = _o[1];
493
494
  var prevFieldStackRef = (0, react_1.useRef)([]);
494
- var _o = (0, react_1.useState)({}), repeats = _o[0], setRepeats = _o[1];
495
+ var _p = (0, react_1.useState)({}), repeats = _p[0], setRepeats = _p[1];
495
496
  var gaEventRef = (0, react_1.useRef)({});
496
497
  var goBackURL = '';
497
498
  try {
@@ -584,7 +585,7 @@ var useTellescopeForm = function (_a) {
584
585
  field: f,
585
586
  });
586
587
  })); }, [fields, existingResponses]);
587
- var _p = (0, react_1.useState)(initializeFields()), responses = _p[0], setResponses = _p[1];
588
+ var _q = (0, react_1.useState)(initializeFields()), responses = _q[0], setResponses = _q[1];
588
589
  (0, react_1.useEffect)(function () {
589
590
  // Be very careful about refreshing data to avoid losing progress -- only in the case the selected form has changed
590
591
  if (fieldInitRef.current === formId)
@@ -600,7 +601,7 @@ var useTellescopeForm = function (_a) {
600
601
  externalId: f.externalId,
601
602
  blob: undefined,
602
603
  }); })); }, [fields]);
603
- var _q = (0, react_1.useState)(initializeFiles()), selectedFiles = _q[0], setSelectedFiles = _q[1];
604
+ var _t = (0, react_1.useState)(initializeFiles()), selectedFiles = _t[0], setSelectedFiles = _t[1];
604
605
  (0, react_1.useEffect)(function () {
605
606
  // Be very careful about refreshing data to avoid losing progress -- only in the case the selected form has changed
606
607
  if (fileInitRef.current === formId)
@@ -699,7 +700,7 @@ var useTellescopeForm = function (_a) {
699
700
  updateInclusion(true);
700
701
  }, [updateInclusion, currentValue]);
701
702
  var validateBasicField = (0, react_1.useCallback)(function (field) {
702
- var _a, _b, _c, _d, _e, _g, _h, _j, _k, _l, _m, _o, _p, _q, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36;
703
+ var _a, _b, _c, _d, _e, _g, _h, _j, _k, _l, _m, _o, _p, _q, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39;
703
704
  var value = responses.find(function (r) { return r.fieldId === field.id; });
704
705
  var file = selectedFiles.find(function (r) { return r.fieldId === field.id; });
705
706
  if (!value)
@@ -712,34 +713,37 @@ var useTellescopeForm = function (_a) {
712
713
  && !(0, utilities_1.responses_satisfy_conditions)(responses, field.groupShowCondition, logicOptions)) {
713
714
  return null;
714
715
  }
716
+ if (((_a = value.answer) === null || _a === void 0 ? void 0 : _a.type) === 'Rich Text' && ((_c = (_b = value.answer) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.trim()) === '<p></p>' && !field.isOptional) {
717
+ return "Answer is required";
718
+ }
715
719
  if (value.answer.type === 'Insurance') {
716
- if (((_b = (_a = value.answer.value) === null || _a === void 0 ? void 0 : _a.relationshipDetails) === null || _b === void 0 ? void 0 : _b.dateOfBirth) && !(0, exports.isDateString)(value.answer.value.relationshipDetails.dateOfBirth)) {
720
+ if (((_e = (_d = value.answer.value) === null || _d === void 0 ? void 0 : _d.relationshipDetails) === null || _e === void 0 ? void 0 : _e.dateOfBirth) && !(0, exports.isDateString)(value.answer.value.relationshipDetails.dateOfBirth)) {
717
721
  return "Enter date of birth in MM-DD-YYYY format";
718
722
  }
719
723
  if (field.isOptional)
720
724
  return null;
721
- if (!((_c = value.answer.value) === null || _c === void 0 ? void 0 : _c.payerName)) {
725
+ if (!((_g = value.answer.value) === null || _g === void 0 ? void 0 : _g.payerName)) {
722
726
  return "Insurer is required";
723
727
  }
724
- if (!((_d = value.answer.value) === null || _d === void 0 ? void 0 : _d.memberId)) {
728
+ if (!((_h = value.answer.value) === null || _h === void 0 ? void 0 : _h.memberId)) {
725
729
  return "Member ID is required";
726
730
  }
727
731
  // assumes Self by default when left blank
728
- if (((_e = value.answer.value) === null || _e === void 0 ? void 0 : _e.relationship) && ((_g = value.answer.value) === null || _g === void 0 ? void 0 : _g.relationship) !== 'Self' && !((_j = (_h = value.answer.value) === null || _h === void 0 ? void 0 : _h.relationshipDetails) === null || _j === void 0 ? void 0 : _j.fname)) {
732
+ if (((_j = value.answer.value) === null || _j === void 0 ? void 0 : _j.relationship) && ((_k = value.answer.value) === null || _k === void 0 ? void 0 : _k.relationship) !== 'Self' && !((_m = (_l = value.answer.value) === null || _l === void 0 ? void 0 : _l.relationshipDetails) === null || _m === void 0 ? void 0 : _m.fname)) {
729
733
  return "First name is required";
730
734
  }
731
- if (((_k = value.answer.value) === null || _k === void 0 ? void 0 : _k.relationship) && ((_l = value.answer.value) === null || _l === void 0 ? void 0 : _l.relationship) !== 'Self' && !((_o = (_m = value.answer.value) === null || _m === void 0 ? void 0 : _m.relationshipDetails) === null || _o === void 0 ? void 0 : _o.lname)) {
735
+ if (((_o = value.answer.value) === null || _o === void 0 ? void 0 : _o.relationship) && ((_p = value.answer.value) === null || _p === void 0 ? void 0 : _p.relationship) !== 'Self' && !((_t = (_q = value.answer.value) === null || _q === void 0 ? void 0 : _q.relationshipDetails) === null || _t === void 0 ? void 0 : _t.lname)) {
732
736
  return "Last name is required";
733
737
  }
734
- if (((_p = value.answer.value) === null || _p === void 0 ? void 0 : _p.relationship) && ((_q = value.answer.value) === null || _q === void 0 ? void 0 : _q.relationship) !== 'Self' && !((_u = (_t = value.answer.value) === null || _t === void 0 ? void 0 : _t.relationshipDetails) === null || _u === void 0 ? void 0 : _u.gender)) {
738
+ if (((_u = value.answer.value) === null || _u === void 0 ? void 0 : _u.relationship) && ((_v = value.answer.value) === null || _v === void 0 ? void 0 : _v.relationship) !== 'Self' && !((_x = (_w = value.answer.value) === null || _w === void 0 ? void 0 : _w.relationshipDetails) === null || _x === void 0 ? void 0 : _x.gender)) {
735
739
  return "Gender is required";
736
740
  }
737
- if (((_v = value.answer.value) === null || _v === void 0 ? void 0 : _v.relationship) && ((_w = value.answer.value) === null || _w === void 0 ? void 0 : _w.relationship) !== 'Self' && !((_y = (_x = value.answer.value) === null || _x === void 0 ? void 0 : _x.relationshipDetails) === null || _y === void 0 ? void 0 : _y.dateOfBirth)) {
741
+ if (((_y = value.answer.value) === null || _y === void 0 ? void 0 : _y.relationship) && ((_z = value.answer.value) === null || _z === void 0 ? void 0 : _z.relationship) !== 'Self' && !((_1 = (_0 = value.answer.value) === null || _0 === void 0 ? void 0 : _0.relationshipDetails) === null || _1 === void 0 ? void 0 : _1.dateOfBirth)) {
738
742
  return "Date of birth is required";
739
743
  }
740
744
  }
741
745
  // even when optional, name is required when signed is checked
742
- if (value.answer.type === 'signature' && ((_z = value.answer.value) === null || _z === void 0 ? void 0 : _z.signed) && !value.answer.value.fullName) {
746
+ if (value.answer.type === 'signature' && ((_2 = value.answer.value) === null || _2 === void 0 ? void 0 : _2.signed) && !value.answer.value.fullName) {
743
747
  return "Please enter your full name";
744
748
  }
745
749
  // event when optional, phone should be valid phone number if partially entered
@@ -750,58 +754,58 @@ var useTellescopeForm = function (_a) {
750
754
  validation_1.phoneValidator.validate()(value.answer.value);
751
755
  }
752
756
  catch (err) {
753
- return (_0 = err === null || err === void 0 ? void 0 : err.message) !== null && _0 !== void 0 ? _0 : "Enter a valid phone number";
757
+ return (_3 = err === null || err === void 0 ? void 0 : err.message) !== null && _3 !== void 0 ? _3 : "Enter a valid phone number";
754
758
  }
755
759
  }
756
760
  if (field.type === 'description')
757
761
  return null;
758
762
  if (field.type === 'string' || field.type === 'stringLong' || field.type === 'number') {
759
- if (((_1 = field.options) === null || _1 === void 0 ? void 0 : _1.maxLength) && field.options.maxLength !== -1) {
760
- if (((_2 = value.answer.value) !== null && _2 !== void 0 ? _2 : '').toString().length > field.options.maxLength) {
763
+ if (((_4 = field.options) === null || _4 === void 0 ? void 0 : _4.maxLength) && field.options.maxLength !== -1) {
764
+ if (((_5 = value.answer.value) !== null && _5 !== void 0 ? _5 : '').toString().length > field.options.maxLength) {
761
765
  return "Answer must be no more than ".concat(field.options.maxLength, " characters");
762
766
  }
763
767
  }
764
- if (((_3 = field.options) === null || _3 === void 0 ? void 0 : _3.minLength) && field.options.minLength !== -1) {
768
+ if (((_6 = field.options) === null || _6 === void 0 ? void 0 : _6.minLength) && field.options.minLength !== -1) {
765
769
  // allow optional when min length is greater than 0, only show error when value is entered
766
770
  if (field.isOptional && !value.answer.value)
767
771
  return null;
768
- if (((_4 = value.answer.value) !== null && _4 !== void 0 ? _4 : '').toString().length < field.options.minLength) {
772
+ if (((_7 = value.answer.value) !== null && _7 !== void 0 ? _7 : '').toString().length < field.options.minLength) {
769
773
  return "Answer must be at least ".concat(field.options.minLength, " characters");
770
774
  }
771
775
  }
772
- if (((_5 = field.options) === null || _5 === void 0 ? void 0 : _5.repeat) && (!field.isOptional || value.answer.value || repeats[field.id])) {
776
+ if (((_8 = field.options) === null || _8 === void 0 ? void 0 : _8.repeat) && (!field.isOptional || value.answer.value || repeats[field.id])) {
773
777
  if (value.answer.value !== repeats[field.id]) {
774
778
  return "Answers must match";
775
779
  }
776
780
  }
777
781
  if (value.answer.type === 'string' && (value.answer.value || '').length >= 5000) {
778
- return "Must be under 5000 characters, got ".concat((_6 = value.answer.value) === null || _6 === void 0 ? void 0 : _6.length);
782
+ return "Must be under 5000 characters, got ".concat((_9 = value.answer.value) === null || _9 === void 0 ? void 0 : _9.length);
779
783
  }
780
784
  if (value.answer.type === 'stringLong' && (value.answer.value || '').length >= 20000) {
781
- return "Must be under 20000 characters, got ".concat((_7 = value.answer.value) === null || _7 === void 0 ? void 0 : _7.length);
785
+ return "Must be under 20000 characters, got ".concat((_10 = value.answer.value) === null || _10 === void 0 ? void 0 : _10.length);
782
786
  }
783
787
  }
784
788
  if (value.answer.type === 'number' && value.answer.value) {
785
- if (((_9 = (_8 = field.options) === null || _8 === void 0 ? void 0 : _8.min) !== null && _9 !== void 0 ? _9 : -Infinity) >= value.answer.value) {
786
- return "Must be greater than ".concat((_10 = field.options) === null || _10 === void 0 ? void 0 : _10.min);
789
+ if (((_12 = (_11 = field.options) === null || _11 === void 0 ? void 0 : _11.min) !== null && _12 !== void 0 ? _12 : -Infinity) >= value.answer.value) {
790
+ return "Must be greater than ".concat((_13 = field.options) === null || _13 === void 0 ? void 0 : _13.min);
787
791
  }
788
- if (((_12 = (_11 = field.options) === null || _11 === void 0 ? void 0 : _11.max) !== null && _12 !== void 0 ? _12 : Infinity) <= value.answer.value) {
789
- return "Must be less than ".concat((_13 = field.options) === null || _13 === void 0 ? void 0 : _13.max);
792
+ if (((_15 = (_14 = field.options) === null || _14 === void 0 ? void 0 : _14.max) !== null && _15 !== void 0 ? _15 : Infinity) <= value.answer.value) {
793
+ return "Must be less than ".concat((_16 = field.options) === null || _16 === void 0 ? void 0 : _16.max);
790
794
  }
791
795
  }
792
796
  if (field.isOptional || (sessionType === 'user' && field.type === 'Appointment Booking' && !enduserId)) {
793
797
  return null;
794
798
  }
795
799
  if (value.answer.type === 'Height') {
796
- if (typeof ((_14 = value.answer.value) === null || _14 === void 0 ? void 0 : _14.feet) !== 'number' || isNaN((_15 = value.answer.value) === null || _15 === void 0 ? void 0 : _15.feet)) {
800
+ if (typeof ((_17 = value.answer.value) === null || _17 === void 0 ? void 0 : _17.feet) !== 'number' || isNaN((_18 = value.answer.value) === null || _18 === void 0 ? void 0 : _18.feet)) {
797
801
  return "Feet must be provided";
798
802
  }
799
- if (typeof ((_16 = value.answer.value) === null || _16 === void 0 ? void 0 : _16.inches) !== 'number' || isNaN((_17 = value.answer.value) === null || _17 === void 0 ? void 0 : _17.inches)) {
803
+ if (typeof ((_19 = value.answer.value) === null || _19 === void 0 ? void 0 : _19.inches) !== 'number' || isNaN((_20 = value.answer.value) === null || _20 === void 0 ? void 0 : _20.inches)) {
800
804
  return "Inches must be provided (enter 0 for no inches)";
801
805
  }
802
806
  }
803
807
  if (value.answer.type === 'Related Contacts') {
804
- for (var i = 0; i < ((_18 = value.answer.value) !== null && _18 !== void 0 ? _18 : []).length; i++) {
808
+ for (var i = 0; i < ((_21 = value.answer.value) !== null && _21 !== void 0 ? _21 : []).length; i++) {
805
809
  var contact = value.answer.value[i];
806
810
  var errorMessage = (0, index_1.contact_is_valid)(contact);
807
811
  if (errorMessage) {
@@ -810,11 +814,11 @@ var useTellescopeForm = function (_a) {
810
814
  }
811
815
  }
812
816
  if (value.answer.type === 'Medications') {
813
- if (!((_20 = (_19 = value.answer) === null || _19 === void 0 ? void 0 : _19.value) === null || _20 === void 0 ? void 0 : _20.length)) {
817
+ if (!((_23 = (_22 = value.answer) === null || _22 === void 0 ? void 0 : _22.value) === null || _23 === void 0 ? void 0 : _23.length)) {
814
818
  return "At least one medication is required";
815
819
  }
816
- for (var _i = 0, _37 = (_21 = value.answer.value) !== null && _21 !== void 0 ? _21 : []; _i < _37.length; _i++) {
817
- var m = _37[_i];
820
+ for (var _i = 0, _40 = (_24 = value.answer.value) !== null && _24 !== void 0 ? _24 : []; _i < _40.length; _i++) {
821
+ var m = _40[_i];
818
822
  if (!(m.drugName || m.otherDrug)) {
819
823
  return "A drug selection is required for each medication";
820
824
  }
@@ -822,14 +826,14 @@ var useTellescopeForm = function (_a) {
822
826
  }
823
827
  // remaining are required, non-empty
824
828
  if (field.type === 'file' || field.type === 'files') {
825
- if (!((_22 = file.blobs) === null || _22 === void 0 ? void 0 : _22.length)) {
829
+ if (!((_25 = file.blobs) === null || _25 === void 0 ? void 0 : _25.length)) {
826
830
  return "A file is required";
827
831
  }
828
- if (typeof ((_23 = field.options) === null || _23 === void 0 ? void 0 : _23.min) === 'number' && file.blobs.length < field.options.min) {
829
- return "At least ".concat((_24 = field.options) === null || _24 === void 0 ? void 0 : _24.min, " file(s) are required");
832
+ if (typeof ((_26 = field.options) === null || _26 === void 0 ? void 0 : _26.min) === 'number' && file.blobs.length < field.options.min) {
833
+ return "At least ".concat((_27 = field.options) === null || _27 === void 0 ? void 0 : _27.min, " file(s) are required");
830
834
  }
831
- if (typeof ((_25 = field.options) === null || _25 === void 0 ? void 0 : _25.max) === 'number' && file.blobs.length > field.options.max) {
832
- return "At most ".concat((_26 = field.options) === null || _26 === void 0 ? void 0 : _26.max, " file(s) are allowed");
835
+ if (typeof ((_28 = field.options) === null || _28 === void 0 ? void 0 : _28.max) === 'number' && file.blobs.length > field.options.max) {
836
+ return "At most ".concat((_29 = field.options) === null || _29 === void 0 ? void 0 : _29.max, " file(s) are allowed");
833
837
  }
834
838
  return null; // no need to check against other stuff
835
839
  }
@@ -846,7 +850,7 @@ var useTellescopeForm = function (_a) {
846
850
  }
847
851
  // remaining values exist and need to be validated by type
848
852
  if (value.answer.type === 'Address') {
849
- var stateOnly = (_28 = (_27 = field.options) === null || _27 === void 0 ? void 0 : _27.addressFields) === null || _28 === void 0 ? void 0 : _28.includes('state');
853
+ var stateOnly = (_31 = (_30 = field.options) === null || _30 === void 0 ? void 0 : _30.addressFields) === null || _31 === void 0 ? void 0 : _31.includes('state');
850
854
  if (!value.answer.value.addressLineOne && !stateOnly) {
851
855
  return "Address Line 1 is required";
852
856
  }
@@ -859,14 +863,14 @@ var useTellescopeForm = function (_a) {
859
863
  if (!value.answer.value.zipCode && !stateOnly) {
860
864
  return "ZIP code is required";
861
865
  }
862
- if (!isZIPString((_29 = value.answer.value) === null || _29 === void 0 ? void 0 : _29.zipCode) && !stateOnly) {
866
+ if (!isZIPString((_32 = value.answer.value) === null || _32 === void 0 ? void 0 : _32.zipCode) && !stateOnly) {
863
867
  return "Enter a valid ZIP code";
864
868
  }
865
- if (!((_30 = value.answer.value) === null || _30 === void 0 ? void 0 : _30.zipPlusFour) && field.fullZIP && !stateOnly) {
869
+ if (!((_33 = value.answer.value) === null || _33 === void 0 ? void 0 : _33.zipPlusFour) && field.fullZIP && !stateOnly) {
866
870
  return "ZIP+4 is required";
867
871
  }
868
- if (((_31 = value.answer.value) === null || _31 === void 0 ? void 0 : _31.zipPlusFour) && !stateOnly) {
869
- var zipPlus4 = ((_32 = value.answer.value) === null || _32 === void 0 ? void 0 : _32.zipPlusFour) || '';
872
+ if (((_34 = value.answer.value) === null || _34 === void 0 ? void 0 : _34.zipPlusFour) && !stateOnly) {
873
+ var zipPlus4 = ((_35 = value.answer.value) === null || _35 === void 0 ? void 0 : _35.zipPlusFour) || '';
870
874
  if (zipPlus4.length !== 4 || !/\d{4}$/.test(zipPlus4)) {
871
875
  return "ZIP+4 must be 4 digits";
872
876
  }
@@ -880,11 +884,11 @@ var useTellescopeForm = function (_a) {
880
884
  }
881
885
  else if (value.answer.type === 'Table Input') {
882
886
  var rowNumber = 0;
883
- for (var _38 = 0, _39 = value.answer.value || []; _38 < _39.length; _38++) {
884
- var row = _39[_38];
887
+ for (var _41 = 0, _42 = value.answer.value || []; _41 < _42.length; _41++) {
888
+ var row = _42[_41];
885
889
  rowNumber++;
886
- for (var _40 = 0, row_1 = row; _40 < row_1.length; _40++) {
887
- var cell = row_1[_40];
890
+ for (var _43 = 0, row_1 = row; _43 < row_1.length; _43++) {
891
+ var cell = row_1[_43];
888
892
  if (!cell.entry) {
889
893
  return "Enter a value for ".concat(cell.label, " in row ").concat(rowNumber);
890
894
  }
@@ -907,9 +911,9 @@ var useTellescopeForm = function (_a) {
907
911
  }
908
912
  }
909
913
  else if (value.answer.type === 'rating') {
910
- if ((((_33 = field === null || field === void 0 ? void 0 : field.options) === null || _33 === void 0 ? void 0 : _33.from) && value.answer.value < field.options.from)
911
- || ((_34 = field === null || field === void 0 ? void 0 : field.options) === null || _34 === void 0 ? void 0 : _34.to) && value.answer.value > field.options.to) {
912
- return "Please enter a number between ".concat((_35 = field === null || field === void 0 ? void 0 : field.options) === null || _35 === void 0 ? void 0 : _35.from, " and ").concat((_36 = field === null || field === void 0 ? void 0 : field.options) === null || _36 === void 0 ? void 0 : _36.to);
914
+ if ((((_36 = field === null || field === void 0 ? void 0 : field.options) === null || _36 === void 0 ? void 0 : _36.from) && value.answer.value < field.options.from)
915
+ || ((_37 = field === null || field === void 0 ? void 0 : field.options) === null || _37 === void 0 ? void 0 : _37.to) && value.answer.value > field.options.to) {
916
+ return "Please enter a number between ".concat((_38 = field === null || field === void 0 ? void 0 : field.options) === null || _38 === void 0 ? void 0 : _38.from, " and ").concat((_39 = field === null || field === void 0 ? void 0 : field.options) === null || _39 === void 0 ? void 0 : _39.to);
913
917
  }
914
918
  }
915
919
  else if (value.answer.type === 'signature') {
@@ -998,6 +1002,35 @@ var useTellescopeForm = function (_a) {
998
1002
  }
999
1003
  return responsesToSubmit;
1000
1004
  }, [responses]);
1005
+ var handleFileUpload = (0, react_1.useCallback)(function (blob, fieldId) { return __awaiter(void 0, void 0, void 0, function () {
1006
+ var responseIndex, result, secureName;
1007
+ var _a, _b;
1008
+ return __generator(this, function (_c) {
1009
+ switch (_c.label) {
1010
+ case 0:
1011
+ responseIndex = responses.findIndex(function (f) { return f.fieldId === fieldId; });
1012
+ result = { name: blob.name, secureName: '' };
1013
+ return [4 /*yield*/, handleUpload({
1014
+ name: blob.name,
1015
+ size: blob.size,
1016
+ type: blob.type,
1017
+ enduserId: enduserId,
1018
+ }, blob)];
1019
+ case 1:
1020
+ secureName = (_c.sent()).secureName;
1021
+ if (responses[responseIndex].answer.type === 'files') {
1022
+ if (!responses[responseIndex].answer.value) {
1023
+ responses[responseIndex].answer.value = [];
1024
+ }
1025
+ responses[responseIndex].answer.value.push(__assign(__assign({}, result), { type: blob.type, secureName: secureName, name: (_a = result.name) !== null && _a !== void 0 ? _a : '' }));
1026
+ }
1027
+ else {
1028
+ responses[responseIndex].answer.value = __assign(__assign({}, result), { type: blob.type, secureName: secureName, name: (_b = result.name) !== null && _b !== void 0 ? _b : '' });
1029
+ }
1030
+ return [2 /*return*/];
1031
+ }
1032
+ });
1033
+ }); }, [responses, handleUpload]);
1001
1034
  var submit = (0, react_1.useCallback)(function (options) { return __awaiter(void 0, void 0, void 0, function () {
1002
1035
  var hasFile, _loop_9, _i, selectedFiles_1, blobInfo, err_1, responsesToSubmit_3, _a, responsesToSubmit_2, r, _loop_10, _b, _c, f, errors, _d, _e, eId, _g, formResponse, nextFormGroupPublicURL, _h, _j, _k, err_2, err_3;
1003
1036
  var _l;
@@ -1013,37 +1046,26 @@ var useTellescopeForm = function (_a) {
1013
1046
  case 1:
1014
1047
  _4.trys.push([1, 6, 7, 8]);
1015
1048
  _loop_9 = function (blobInfo) {
1016
- var blobs, fieldId, _5, blobs_1, blob, result, secureName, responseIndex;
1049
+ var blobs, fieldId, responseIndex, response, _5, blobs_1, blob;
1017
1050
  return __generator(this, function (_6) {
1018
1051
  switch (_6.label) {
1019
1052
  case 0:
1020
1053
  blobs = blobInfo.blobs, fieldId = blobInfo.fieldId;
1021
1054
  if (!blobs)
1022
1055
  return [2 /*return*/, "continue"];
1056
+ responseIndex = responses.findIndex(function (f) { return f.fieldId === fieldId; });
1057
+ response = responses[responseIndex];
1058
+ if ((_o = (_m = response.field) === null || _m === void 0 ? void 0 : _m.options) === null || _o === void 0 ? void 0 : _o.autoUploadFiles) {
1059
+ return [2 /*return*/, "continue"];
1060
+ } // must have uploaded prior to submission
1023
1061
  _5 = 0, blobs_1 = blobs;
1024
1062
  _6.label = 1;
1025
1063
  case 1:
1026
1064
  if (!(_5 < blobs_1.length)) return [3 /*break*/, 4];
1027
1065
  blob = blobs_1[_5];
1028
- result = { name: blob.name, secureName: '' };
1029
- return [4 /*yield*/, handleUpload({
1030
- name: blob.name,
1031
- size: blob.size,
1032
- type: blob.type,
1033
- enduserId: enduserId,
1034
- }, blob)];
1066
+ return [4 /*yield*/, handleFileUpload(blob, fieldId)];
1035
1067
  case 2:
1036
- secureName = (_6.sent()).secureName;
1037
- responseIndex = responses.findIndex(function (f) { return f.fieldId === fieldId; });
1038
- if (responses[responseIndex].answer.type === 'files') {
1039
- if (!responses[responseIndex].answer.value) {
1040
- responses[responseIndex].answer.value = [];
1041
- }
1042
- responses[responseIndex].answer.value.push(__assign(__assign({}, result), { type: blob.type, secureName: secureName, name: (_m = result.name) !== null && _m !== void 0 ? _m : '' }));
1043
- }
1044
- else {
1045
- responses[responseIndex].answer.value = __assign(__assign({}, result), { type: blob.type, secureName: secureName, name: (_o = result.name) !== null && _o !== void 0 ? _o : '' });
1046
- }
1068
+ _6.sent();
1047
1069
  _6.label = 3;
1048
1070
  case 3:
1049
1071
  _5++;
@@ -1205,8 +1227,11 @@ var useTellescopeForm = function (_a) {
1205
1227
  case 20: return [2 /*return*/];
1206
1228
  }
1207
1229
  });
1208
- }); }, [accessCode, automationStepId, enduserId, responses, selectedFiles, session, handleUpload, existingResponses, ga4measurementId, rootResponseId, parentResponseId, calendarEventId, goBackURL, logicOptions]);
1230
+ }); }, [accessCode, automationStepId, enduserId, responses, selectedFiles, session, handleUpload, existingResponses, ga4measurementId, rootResponseId, parentResponseId, calendarEventId, goBackURL, logicOptions, handleFileUpload]);
1209
1231
  var isNextDisabled = (0, react_1.useCallback)(function () {
1232
+ if (uploadingFiles.length) {
1233
+ return true;
1234
+ }
1210
1235
  if (activeField.children.length === 0) {
1211
1236
  return true;
1212
1237
  }
@@ -1214,7 +1239,7 @@ var useTellescopeForm = function (_a) {
1214
1239
  return true;
1215
1240
  }
1216
1241
  return false;
1217
- }, [activeField, validateField]);
1242
+ }, [activeField, validateField, uploadingFiles]);
1218
1243
  var autoAdvanceRef = (0, react_1.useRef)(false);
1219
1244
  var goToNextField = (0, react_1.useCallback)(function () {
1220
1245
  var _a, _b, _c;
@@ -1372,6 +1397,9 @@ var useTellescopeForm = function (_a) {
1372
1397
  customization: customization,
1373
1398
  handleDatabaseSelect: handleDatabaseSelect,
1374
1399
  logicOptions: logicOptions,
1400
+ uploadingFiles: uploadingFiles,
1401
+ setUploadingFiles: setUploadingFiles,
1402
+ handleFileUpload: handleFileUpload,
1375
1403
  };
1376
1404
  };
1377
1405
  exports.useTellescopeForm = useTellescopeForm;