react-survey-builder 1.0.15 → 1.0.17

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.
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
  var _reactDom = _interopRequireDefault(require("react-dom"));
12
12
  var _reactIntl = require("react-intl");
@@ -17,9 +17,9 @@ var _customElement = _interopRequireDefault(require("./survey-elements/custom-el
17
17
  var _registry = _interopRequireDefault(require("./stores/registry"));
18
18
  var _reactBootstrap = require("react-bootstrap");
19
19
  var _reactHookForm = require("react-hook-form");
20
- var _componentErrorMessage = _interopRequireDefault(require("./survey-elements/component-error-message"));
21
20
  var _lodash = require("lodash");
22
21
  var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
22
+ var _reactPhoneNumberInput = require("react-phone-number-input");
23
23
  function ownKeys(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; }
24
24
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
25
25
  * <FormFields />
@@ -47,7 +47,7 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
47
47
  onSubmit = _ref.onSubmit,
48
48
  onChange = _ref.onChange,
49
49
  onBlur = _ref.onBlur,
50
- data = _ref.data,
50
+ items = _ref.items,
51
51
  _ref$submitButton = _ref.submitButton,
52
52
  submitButton = _ref$submitButton === void 0 ? false : _ref$submitButton,
53
53
  _ref$backButton = _ref.backButton,
@@ -66,76 +66,83 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
66
66
  authenticity_token = _ref.authenticity_token,
67
67
  task_id = _ref.task_id,
68
68
  buttonClassName = _ref.buttonClassName,
69
- formId = _ref.formId;
70
- var methods = (0, _reactHookForm.useFormContext)();
71
- console.log(methods);
69
+ formId = _ref.formId,
70
+ methods = _ref.methods,
71
+ _ref$print = _ref.print,
72
+ print = _ref$print === void 0 ? false : _ref$print;
72
73
  if (!methods) return null;
73
74
 
74
75
  //#region helper functions
75
76
 
76
- var _convert = function _convert(answers) {
77
- if (Array.isArray(answers)) {
77
+ var _convert = function _convert($dataAnswers) {
78
+ if (Array.isArray($dataAnswers)) {
78
79
  var result = {};
79
- answers.forEach(function (x) {
80
- if (x.name.indexOf('tags_') > -1) {
81
- if (Array.isArray(x.value)) {
82
- result[x.name] = x.value.map(function (y) {
83
- return y.value;
84
- }).join(',');
85
- } else {
86
- result[x.name] = x.value;
87
- }
88
- } else {
89
- result[x.name] = x.value;
90
- }
80
+ $dataAnswers.forEach(function (answer) {
81
+ result[answer.name] = answer.value;
91
82
  });
92
83
  return result;
93
84
  }
94
- return answers || {};
85
+ return $dataAnswers || {};
95
86
  };
96
87
  var form = _react["default"].useRef();
97
88
  var inputs = _react["default"].useRef({});
98
89
  var answerData = _react["default"].useRef(_convert(answers));
99
- var _getDefaultValue = function _getDefaultValue(item) {
100
- var defaultValue = answerData.current[item.fieldName];
101
- if (item.element === 'DatePicker') {
102
- var _item$defaultToday;
103
- var defaultToday = (_item$defaultToday = item.defaultToday) !== null && _item$defaultToday !== void 0 ? _item$defaultToday : false;
104
- var formatMask = item.formatMask || 'MM/DD/YYYY';
90
+ var _getDefaultValue = function _getDefaultValue($dataItem) {
91
+ var defaultValue = answerData.current[$dataItem.fieldName];
92
+ if ($dataItem.element === 'DatePicker') {
93
+ var _$dataItem$defaultTod;
94
+ var defaultToday = (_$dataItem$defaultTod = $dataItem.defaultToday) !== null && _$dataItem$defaultTod !== void 0 ? _$dataItem$defaultTod : false;
95
+ var formatMask = $dataItem.formatMask || 'MM/DD/YYYY';
105
96
  if (defaultToday && (defaultValue === '' || defaultValue === undefined)) {
106
97
  defaultValue = (0, _momentTimezone["default"])().format(formatMask);
107
98
  }
108
99
  }
100
+ if ($dataItem.element === 'Checkbox') {
101
+ var _$dataItem$defaultChe;
102
+ var defaultChecked = (_$dataItem$defaultChe = $dataItem.defaultChecked) !== null && _$dataItem$defaultChe !== void 0 ? _$dataItem$defaultChe : false;
103
+ if (defaultChecked === true) {
104
+ defaultValue = true;
105
+ }
106
+ }
107
+ if (defaultValue === undefined) {
108
+ if ($dataItem.element === 'Checkboxes' || $dataItem.element === 'Tags') {
109
+ defaultValue = [];
110
+ } else {
111
+ defaultValue = '';
112
+ }
113
+ }
109
114
  return defaultValue;
110
115
  };
111
- var _optionsDefaultValue = function _optionsDefaultValue(item) {
112
- var defaultValue = _getDefaultValue(item);
116
+ var _optionsDefaultValue = function _optionsDefaultValue($dataItem) {
117
+ var defaultValue = _getDefaultValue($dataItem);
113
118
  if (defaultValue) {
114
119
  return defaultValue;
115
120
  }
116
121
  var defaultChecked = [];
117
- item.options.forEach(function (option) {
122
+ $dataItem.options.forEach(function (option) {
118
123
  if (answerData.current["option_".concat(option.key)]) {
119
124
  defaultChecked.push(option.key);
120
125
  }
121
126
  });
122
127
  return defaultChecked;
123
128
  };
124
- var _getItemValue = function _getItemValue(item, ref) {
129
+ var _getItemValue = function _getItemValue($dataItem, ref) {
125
130
  var $item = {
126
- element: item.element,
131
+ element: $dataItem.element,
127
132
  value: ''
128
133
  };
129
- if (item.element === 'Rating') {
134
+ if ($dataItem.element === 'Rating') {
130
135
  $item.value = ref.inputField.current.state.rating;
131
- } else if (item.element === 'Tags') {
132
- $item.value = ref.state.value;
136
+ } else if ($dataItem.element === 'Tags') {
137
+ $item.value = ref.props.value;
133
138
  // } else if (item.element === 'DatePicker') {
134
139
  // $item.value = ref.state.value;
135
- } else if (item.element === 'Camera') {
140
+ } else if ($dataItem.element === 'Camera') {
136
141
  $item.value = ref.state.img;
137
- } else if (item.element === 'FileUpload') {
142
+ } else if ($dataItem.element === 'FileUpload') {
138
143
  $item.value = ref.state.fileUpload;
144
+ } else if ($dataItem.element === 'Signature') {
145
+ $item.value = ref.state.value;
139
146
  } else if (ref && ref.inputField && ref.inputField.current) {
140
147
  $item = _reactDom["default"].findDOMNode(ref.inputField.current);
141
148
  if ($item && typeof $item.value === 'string') {
@@ -144,37 +151,37 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
144
151
  }
145
152
  return $item;
146
153
  };
147
- var _isIncorrect = function _isIncorrect(item) {
154
+ var _isIncorrect = function _isIncorrect($dataItem) {
148
155
  var incorrect = false;
149
- if (item.canHaveAnswer) {
150
- var ref = inputs.current[item.fieldName];
151
- if (item.element === 'Checkboxes' || item.element === 'RadioButtons') {
152
- item.options.forEach(function (option) {
156
+ if ($dataItem.canHaveAnswer) {
157
+ var ref = inputs.current[$dataItem.fieldName];
158
+ if ($dataItem.element === 'Checkboxes' || $dataItem.element === 'RadioButtons') {
159
+ $dataItem.options.forEach(function (option) {
153
160
  var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
154
161
  if (option.hasOwnProperty('correct') && !$option.checked || !option.hasOwnProperty('correct') && $option.checked) {
155
162
  incorrect = true;
156
163
  }
157
164
  });
158
165
  } else {
159
- var $item = _getItemValue(item, ref);
160
- if (item.element === 'Rating') {
161
- if ($item.value.toString() !== item.correct) {
166
+ var $item = _getItemValue($dataItem, ref);
167
+ if ($dataItem.element === 'Rating') {
168
+ if ($item.value.toString() !== $dataItem.correct) {
162
169
  incorrect = true;
163
170
  }
164
- } else if ($item.value.toLowerCase() !== item.correct.trim().toLowerCase()) {
171
+ } else if ($item.value.toLowerCase() !== $dataItem.correct.trim().toLowerCase()) {
165
172
  incorrect = true;
166
173
  }
167
174
  }
168
175
  }
169
176
  return incorrect;
170
177
  };
171
- var _isInvalid = function _isInvalid(item) {
178
+ var _isInvalid = function _isInvalid($dataItem) {
172
179
  var invalid = false;
173
- if (item.required === true) {
174
- var ref = inputs.current[item.fieldName];
175
- if (item.element === 'Checkboxes' || item.element === 'RadioButtons') {
180
+ if ($dataItem.required === true) {
181
+ var ref = inputs.current[$dataItem.fieldName];
182
+ if ($dataItem.element === 'Checkboxes' || $dataItem.element === 'RadioButtons') {
176
183
  var checked_options = 0;
177
- item.options.forEach(function (option) {
184
+ $dataItem.options.forEach(function (option) {
178
185
  var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
179
186
  if ($option.checked) {
180
187
  checked_options += 1;
@@ -185,8 +192,8 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
185
192
  invalid = true;
186
193
  }
187
194
  } else {
188
- var $item = _getItemValue(item, ref);
189
- if (item.element === 'Rating') {
195
+ var $item = _getItemValue($dataItem, ref);
196
+ if ($dataItem.element === 'Rating') {
190
197
  if ($item.value === 0) {
191
198
  invalid = true;
192
199
  }
@@ -197,33 +204,32 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
197
204
  }
198
205
  return invalid;
199
206
  };
200
- var _collect = function _collect(item) {
207
+ var _collect = function _collect($dataItem) {
201
208
  var itemData = {
202
- id: item.id,
203
- name: item.fieldName,
204
- customName: item.customName || item.fieldName,
205
- help: item.help,
206
- label: item.label !== null && item.label !== undefined && item.label !== '' ? item.label.trim() : ''
209
+ id: $dataItem.id,
210
+ name: $dataItem.fieldName,
211
+ customName: $dataItem.customName || $dataItem.fieldName,
212
+ label: $dataItem.label !== null && $dataItem.label !== undefined && $dataItem.label !== '' ? $dataItem.label.trim() : ''
207
213
  };
208
214
  if (!itemData.name) return null;
209
- var ref = inputs.current[item.fieldName];
210
- if (item.element === 'Checkboxes') {
215
+ var ref = inputs.current[$dataItem.fieldName];
216
+ if ($dataItem.element === 'Checkboxes') {
211
217
  var checkedOptions = [];
212
- item.options.forEach(function (option) {
218
+ $dataItem.options.forEach(function (option) {
213
219
  var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
214
220
  if ($option.checked) {
215
221
  checkedOptions.push(option.value);
216
222
  }
217
223
  });
218
224
  itemData.value = checkedOptions;
219
- } else if (item.element === 'RadioButtons') {
220
- item.options.forEach(function (option) {
225
+ } else if ($dataItem.element === 'RadioButtons') {
226
+ $dataItem.options.forEach(function (option) {
221
227
  var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
222
228
  if ($option.checked) {
223
229
  itemData.value = option.value;
224
230
  }
225
231
  });
226
- } else if (item.element === 'Checkbox') {
232
+ } else if ($dataItem.element === 'Checkbox') {
227
233
  if (!ref || !ref.inputField || !ref.inputField.current) {
228
234
  itemData.value = false;
229
235
  } else {
@@ -231,14 +237,14 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
231
237
  }
232
238
  } else {
233
239
  if (!ref) return null;
234
- itemData.value = _getItemValue(item, ref).value;
240
+ itemData.value = _getItemValue($dataItem, ref).value;
235
241
  }
236
- itemData.required = item.required || false;
242
+ itemData.required = $dataItem.required || false;
237
243
  return itemData;
238
244
  };
239
- var _collectFormData = function _collectFormData($data) {
245
+ var _collectFormData = function _collectFormData($dataItems) {
240
246
  var formData = [];
241
- $data.forEach(function (item) {
247
+ $dataItems.forEach(function (item) {
242
248
  var itemData = _collect(item);
243
249
  if (itemData) {
244
250
  formData.push(itemData);
@@ -246,21 +252,21 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
246
252
  });
247
253
  return formData;
248
254
  };
249
- var _getSignatureImg = function _getSignatureImg(item) {
250
- var ref = inputs.current[item.fieldName];
251
- var $canvas_sig = ref.canvas.current;
252
- if ($canvas_sig) {
253
- var base64 = $canvas_sig.toDataURL().replace('data:image/png;base64,', '');
254
- var _isEmpty = $canvas_sig.isEmpty();
255
- var $input_sig = _reactDom["default"].findDOMNode(ref.inputField.current);
256
- if (_isEmpty) {
257
- $input_sig.value = '';
258
- methods.setValue(item.fieldName, '');
259
- } else {
260
- $input_sig.value = base64;
261
- methods.setValue(item.fieldName, base64);
262
- }
263
- }
255
+ var _getSignatureImg = function _getSignatureImg($dataItem) {
256
+ // const ref = inputs.current[$dataItem.fieldName];
257
+ // const $canvas_sig = ref.canvas.current;
258
+ // if ($canvas_sig) {
259
+ // const base64 = $canvas_sig.toDataURL().replace('data:image/png;base64,', '');
260
+ // const isEmpty = $canvas_sig.isEmpty();
261
+ // const $input_sig = ReactDOM.findDOMNode(ref.inputField.current);
262
+ // if (isEmpty) {
263
+ // $input_sig.value = '';
264
+ // methods.setValue($dataItem.fieldName, '');
265
+ // } else {
266
+ // $input_sig.value = base64;
267
+ // methods.setValue($dataItem.fieldName, base64);
268
+ // }
269
+ // }
264
270
  };
265
271
 
266
272
  //#endregion
@@ -279,7 +285,7 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
279
285
  // Only submit if there are no errors.
280
286
  if (errors.length < 1) {
281
287
  if (onSubmit) {
282
- var $data = _collectFormData(data);
288
+ var $data = _collectFormData(items);
283
289
  onSubmit($data);
284
290
  } else {
285
291
  var $form = _reactDom["default"].findDOMNode(form.current);
@@ -291,15 +297,15 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
291
297
  // console.log('handleChange');
292
298
  // Call submit function on change
293
299
  if (onChange) {
294
- var $data = _collectFormData(data);
300
+ var $data = _collectFormData(items);
295
301
  onChange($data);
296
302
  }
297
303
  };
298
304
  var validateForm = function validateForm() {
299
305
  var errors = [];
300
- var dataItems = data;
306
+ var dataItems = items;
301
307
  if (displayShort) {
302
- dataItems = data.filter(function (i) {
308
+ dataItems = items.filter(function (i) {
303
309
  return i.alternateForm === true;
304
310
  });
305
311
  }
@@ -355,10 +361,26 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
355
361
  // eslint-disable-next-line no-useless-escape
356
362
  /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
357
363
  };
364
+ var toE164PhoneNumber = function toE164PhoneNumber(phoneNumberValue) {
365
+ if (phoneNumberValue !== undefined && phoneNumberValue !== null) {
366
+ //Filter only numbers from the input
367
+ var cleaned = ('' + phoneNumberValue).replace(/\D/g, '');
368
+
369
+ //Check if the input is of correct
370
+ var match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/);
371
+ if (match) {
372
+ //Remove the matched extension code
373
+ //Change this to format for any country code.
374
+ var intlCode = match[1] ? '+1' : '+1';
375
+ return [intlCode, match[2], match[3], match[4]].join('');
376
+ }
377
+ return '';
378
+ } else {
379
+ return '';
380
+ }
381
+ };
358
382
  var validatePhone = function validatePhone(phone) {
359
- return phone.match(
360
- // eslint-disable-next-line no-useless-escape
361
- /^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/g);
383
+ return (0, _reactPhoneNumberInput.isValidPhoneNumber)(toE164PhoneNumber(phone), 'US');
362
384
  };
363
385
  var validateDate = function validateDate(dateString) {
364
386
  if (dateString !== undefined && dateString !== null && dateString !== "") {
@@ -408,29 +430,39 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
408
430
  }
409
431
  return true;
410
432
  };
411
- var getDataById = function getDataById(id) {
412
- return data.find(function (x) {
433
+ var getDataItemById = function getDataItemById(id) {
434
+ var $dataItem = items.find(function (x) {
413
435
  return x.id === id;
414
436
  });
437
+ if ($dataItem !== undefined) {
438
+ return _objectSpread(_objectSpread({}, $dataItem), {}, {
439
+ fieldRules: getFieldRules($dataItem),
440
+ print: print !== null && print !== void 0 ? print : false,
441
+ hideRequiredAlert: hideRequiredAlert || $dataItem.hideRequiredAlert,
442
+ readOnly: readOnly || $dataItem.readOnly,
443
+ disabled: $dataItem.readOnly,
444
+ mutable: true
445
+ });
446
+ }
447
+ return null;
415
448
  };
416
449
  var getInputElement = function getInputElement(item) {
450
+ if (!item) return null;
417
451
  if (item.custom) {
418
452
  return getCustomElement(item);
419
453
  }
420
454
  var Input = _surveyElements["default"][item.element];
421
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
422
- key: "form_fragment_".concat(item.id)
423
- }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
455
+ return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
424
456
  key: "form_".concat(item.id),
425
457
  control: methods.control,
426
458
  name: item.fieldName,
427
459
  rules: item.fieldRules,
428
460
  defaultValue: _getDefaultValue(item),
429
- disabled: readOnly || item.readOnly,
461
+ disabled: item.disabled,
430
462
  required: item.required,
431
463
  render: function render(_ref3) {
432
464
  var _ref3$field = _ref3.field,
433
- onChange = _ref3$field.onChange,
465
+ _onChange = _ref3$field.onChange,
434
466
  onBlur = _ref3$field.onBlur,
435
467
  value = _ref3$field.value,
436
468
  name = _ref3$field.name,
@@ -443,34 +475,30 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
443
475
  formState = _ref3.formState;
444
476
  return /*#__PURE__*/_react["default"].createElement(Input, {
445
477
  onBlur: onBlur,
446
- onChange: onChange,
478
+ onChange: function onChange(e) {
479
+ _onChange(e);
480
+ handleChange(e);
481
+ },
447
482
  value: value,
448
483
  name: name,
449
484
  ref: function ref(c) {
450
485
  return inputs.current[item.fieldName] = c;
451
486
  },
452
487
  isInvalid: invalid,
453
- handleChange: handleChange,
454
- mutable: true,
455
- data: item,
456
- readOnly: readOnly || item.readOnly,
457
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
488
+ item: item
458
489
  });
459
490
  }
460
- }), /*#__PURE__*/_react["default"].createElement(_componentErrorMessage["default"], {
461
- name: item.fieldName
462
- }));
491
+ });
463
492
  };
464
493
  var getContainerElement = function getContainerElement(item, Element) {
465
- var controls = item.childItems.map(function (x) {
466
- return x ? getInputElement(getDataById(x)) : /*#__PURE__*/_react["default"].createElement("div", null, "\xA0");
494
+ var controls = item.childItems.map(function (childItem) {
495
+ return childItem ? getInputElement(getDataItemById(childItem)) : /*#__PURE__*/_react["default"].createElement("div", null, "\xA0");
467
496
  });
468
497
  return /*#__PURE__*/_react["default"].createElement(Element, {
469
498
  mutable: true,
470
499
  key: "form_".concat(item.id),
471
- data: item,
472
- controls: controls,
473
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
500
+ item: item,
501
+ controls: controls
474
502
  });
475
503
  };
476
504
  var getSimpleElement = function getSimpleElement(item) {
@@ -478,8 +506,7 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
478
506
  return /*#__PURE__*/_react["default"].createElement(Element, {
479
507
  mutable: true,
480
508
  key: "form_".concat(item.id),
481
- data: item,
482
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
509
+ item: item
483
510
  });
484
511
  };
485
512
  var getCustomElement = function getCustomElement(item) {
@@ -491,26 +518,17 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
491
518
  })));
492
519
  }
493
520
  }
494
- var inputProps = item.forwardRef && {
495
- handleChange: handleChange,
496
- defaultValue: _getDefaultValue(item),
497
- ref: function ref(c) {
498
- return inputs.current[item.fieldName] = c;
499
- }
500
- };
501
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
502
- key: "form_fragment_".concat(item.id)
503
- }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
521
+ return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
504
522
  key: "form_".concat(item.id),
505
523
  control: methods.control,
506
524
  name: item.fieldName,
507
525
  rules: item.fieldRules,
508
526
  defaultValue: _getDefaultValue(item),
509
- disabled: readOnly || item.readOnly,
527
+ disabled: item.disabled,
510
528
  required: item.required,
511
529
  render: function render(_ref4) {
512
530
  var _ref4$field = _ref4.field,
513
- onChange = _ref4$field.onChange,
531
+ _onChange2 = _ref4$field.onChange,
514
532
  onBlur = _ref4$field.onBlur,
515
533
  value = _ref4$field.value,
516
534
  name = _ref4$field.name,
@@ -521,25 +539,22 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
521
539
  isDirty = _ref4$fieldState.isDirty,
522
540
  error = _ref4$fieldState.error,
523
541
  formState = _ref4.formState;
524
- return /*#__PURE__*/_react["default"].createElement(_customElement["default"], (0, _extends2["default"])({
542
+ return /*#__PURE__*/_react["default"].createElement(_customElement["default"], {
525
543
  onBlur: onBlur,
526
- onChange: onChange,
544
+ onChange: function onChange(e) {
545
+ _onChange2(e);
546
+ handleChange(e);
547
+ },
527
548
  value: value,
528
549
  name: name,
529
550
  ref: function ref(c) {
530
551
  return inputs.current[item.fieldName] = c;
531
552
  },
532
553
  isInvalid: invalid,
533
- handleChange: handleChange,
534
- mutable: true,
535
- data: item,
536
- readOnly: readOnly || item.readOnly,
537
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
538
- }, inputProps));
554
+ item: item
555
+ });
539
556
  }
540
- }), /*#__PURE__*/_react["default"].createElement(_componentErrorMessage["default"], {
541
- name: item.fieldName
542
- }));
557
+ });
543
558
  };
544
559
  var getFieldRules = function getFieldRules(item) {
545
560
  var fieldRules = {};
@@ -562,18 +577,21 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
562
577
  id: 'message.invalid-email'
563
578
  }));
564
579
  };
580
+ break;
565
581
  case 'PhoneNumber':
566
582
  fieldRules.validate = function (value) {
567
583
  return validatePhone(value) || "".concat(item.label, " ").concat(intl.formatMessage({
568
584
  id: 'message.invalid-phone-number'
569
585
  }));
570
586
  };
587
+ break;
571
588
  case 'DatePicker':
572
589
  fieldRules.validate = function (value) {
573
590
  return validateDate(value) || "".concat(item.label, " ").concat(intl.formatMessage({
574
591
  id: 'message.invalid-date'
575
592
  }));
576
593
  };
594
+ break;
577
595
  default:
578
596
  break;
579
597
  }
@@ -601,9 +619,9 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
601
619
 
602
620
  //#endregion
603
621
 
604
- var dataItems = data;
622
+ var dataItems = items;
605
623
  if (displayShort) {
606
- dataItems = data.filter(function (i) {
624
+ dataItems = items.filter(function (i) {
607
625
  return i.alternateForm === true;
608
626
  });
609
627
  }
@@ -612,11 +630,16 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
612
630
  answerData.current[item.fieldName] = variables[item.variableKey];
613
631
  }
614
632
  });
615
- var items = dataItems.filter(function (x) {
633
+ var fieldItems = dataItems.filter(function (x) {
616
634
  return !x.parentId;
617
635
  }).map(function (item) {
618
636
  if (!item) return null;
619
637
  item.fieldRules = getFieldRules(item);
638
+ item.print = print !== null && print !== void 0 ? print : false;
639
+ item.hideRequiredAlert = hideRequiredAlert || item.hideRequiredAlert;
640
+ item.readOnly = readOnly || item.readOnly;
641
+ item.disabled = item.readOnly;
642
+ item.mutable = true;
620
643
  switch (item.element) {
621
644
  case 'TextInput':
622
645
  case 'EmailInput':
@@ -642,19 +665,17 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
642
665
  case 'FieldSet':
643
666
  return getContainerElement(item, _fieldset.FieldSet);
644
667
  case 'Signature':
645
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
646
- key: "form_fragment_".concat(item.id)
647
- }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
668
+ return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
648
669
  key: "form_".concat(item.id),
649
670
  control: methods.control,
650
671
  name: item.fieldName,
651
672
  rules: item.fieldRules,
652
673
  defaultValue: _getDefaultValue(item),
653
- disabled: readOnly || item.readOnly,
674
+ disabled: item.disabled,
654
675
  required: item.required,
655
676
  render: function render(_ref5) {
656
677
  var _ref5$field = _ref5.field,
657
- onChange = _ref5$field.onChange,
678
+ _onChange3 = _ref5$field.onChange,
658
679
  onBlur = _ref5$field.onBlur,
659
680
  value = _ref5$field.value,
660
681
  name = _ref5$field.name,
@@ -668,36 +689,31 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
668
689
  return /*#__PURE__*/_react["default"].createElement(Signature, {
669
690
  methods: methods,
670
691
  onBlur: onBlur,
671
- onChange: onChange,
692
+ onChange: function onChange(e) {
693
+ _onChange3(e);
694
+ handleChange(e);
695
+ },
672
696
  value: value,
673
697
  name: name,
674
698
  ref: function ref(c) {
675
699
  return inputs.current[item.fieldName] = c;
676
700
  },
677
- handleChange: handleChange,
678
- mutable: true,
679
- data: item,
680
- readOnly: readOnly || item.readOnly,
681
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
701
+ item: item
682
702
  });
683
703
  }
684
- }), /*#__PURE__*/_react["default"].createElement(_componentErrorMessage["default"], {
685
- name: item.fieldName
686
- }));
704
+ });
687
705
  case 'Checkboxes':
688
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
689
- key: "form_fragment_".concat(item.id)
690
- }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
706
+ return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
691
707
  key: "form_".concat(item.id),
692
708
  control: methods.control,
693
709
  name: item.fieldName,
694
710
  rules: item.fieldRules,
695
711
  defaultValue: _optionsDefaultValue(item),
696
- disabled: readOnly || item.readOnly,
712
+ disabled: item.disabled,
697
713
  required: item.required,
698
714
  render: function render(_ref6) {
699
715
  var _ref6$field = _ref6.field,
700
- onChange = _ref6$field.onChange,
716
+ _onChange4 = _ref6$field.onChange,
701
717
  onBlur = _ref6$field.onBlur,
702
718
  value = _ref6$field.value,
703
719
  name = _ref6$field.name,
@@ -710,58 +726,46 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
710
726
  formState = _ref6.formState;
711
727
  return /*#__PURE__*/_react["default"].createElement(Checkboxes, {
712
728
  onBlur: onBlur,
713
- onChange: onChange,
729
+ onChange: function onChange(e) {
730
+ _onChange4(e);
731
+ handleChange(e);
732
+ },
714
733
  value: value,
715
734
  name: name,
716
735
  ref: function ref(c) {
717
736
  return inputs.current[item.fieldName] = c;
718
737
  },
719
738
  isInvalid: invalid,
720
- handleChange: handleChange,
721
- mutable: true,
722
- data: item,
723
- readOnly: readOnly || item.readOnly,
724
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
739
+ item: item
725
740
  });
726
741
  }
727
- }), /*#__PURE__*/_react["default"].createElement(_componentErrorMessage["default"], {
728
- name: item.fieldName
729
- }));
742
+ });
730
743
  case 'Image':
731
744
  return /*#__PURE__*/_react["default"].createElement(Image, {
732
745
  ref: function ref(c) {
733
746
  return inputs.current[item.fieldName] = c;
734
747
  },
735
- handleChange: handleChange,
736
- mutable: true,
737
748
  key: "form_".concat(item.id),
738
- data: item,
739
- defaultValue: _getDefaultValue(item),
740
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
749
+ item: item
741
750
  });
742
- ;
743
751
  case 'Download':
744
752
  return /*#__PURE__*/_react["default"].createElement(Download, {
745
753
  downloadPath: downloadPath,
746
- mutable: true,
747
754
  key: "form_".concat(item.id),
748
- data: item,
749
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
755
+ item: item
750
756
  });
751
757
  case 'Camera':
752
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
753
- key: "form_fragment_".concat(item.id)
754
- }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
758
+ return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
755
759
  key: "form_".concat(item.id),
756
760
  control: methods.control,
757
761
  name: item.fieldName,
758
762
  rules: item.fieldRules,
759
763
  defaultValue: _getDefaultValue(item),
760
- disabled: readOnly || item.readOnly,
764
+ disabled: item.disabled,
761
765
  required: item.required,
762
766
  render: function render(_ref7) {
763
767
  var _ref7$field = _ref7.field,
764
- onChange = _ref7$field.onChange,
768
+ _onChange5 = _ref7$field.onChange,
765
769
  onBlur = _ref7$field.onBlur,
766
770
  value = _ref7$field.value,
767
771
  name = _ref7$field.name,
@@ -774,38 +778,32 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
774
778
  formState = _ref7.formState;
775
779
  return /*#__PURE__*/_react["default"].createElement(Camera, {
776
780
  onBlur: onBlur,
777
- onChange: onChange,
781
+ onChange: function onChange(e) {
782
+ _onChange5(e);
783
+ handleChange(e);
784
+ },
778
785
  value: value,
779
786
  name: name,
780
787
  ref: function ref(c) {
781
788
  return inputs.current[item.fieldName] = c;
782
789
  },
783
790
  isInvalid: invalid,
784
- defaultValue: _getDefaultValue(item),
785
- handleChange: handleChange,
786
- mutable: true,
787
- data: item,
788
- readOnly: readOnly || item.readOnly,
789
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
791
+ item: item
790
792
  });
791
793
  }
792
- }), /*#__PURE__*/_react["default"].createElement(_componentErrorMessage["default"], {
793
- name: item.fieldName
794
- }));
794
+ });
795
795
  case 'FileUpload':
796
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
797
- key: "form_fragment_".concat(item.id)
798
- }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
796
+ return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
799
797
  key: "form_".concat(item.id),
800
798
  control: methods.control,
801
799
  name: item.fieldName,
802
800
  rules: item.fieldRules,
803
801
  defaultValue: _getDefaultValue(item),
804
- disabled: readOnly || item.readOnly,
802
+ disabled: item.disabled,
805
803
  required: item.required,
806
804
  render: function render(_ref8) {
807
805
  var _ref8$field = _ref8.field,
808
- onChange = _ref8$field.onChange,
806
+ _onChange6 = _ref8$field.onChange,
809
807
  onBlur = _ref8$field.onBlur,
810
808
  value = _ref8$field.value,
811
809
  name = _ref8$field.name,
@@ -818,24 +816,20 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
818
816
  formState = _ref8.formState;
819
817
  return /*#__PURE__*/_react["default"].createElement(FileUpload, {
820
818
  onBlur: onBlur,
821
- onChange: onChange,
819
+ onChange: function onChange(e) {
820
+ _onChange6(e);
821
+ handleChange(e);
822
+ },
822
823
  value: value,
823
824
  name: name,
824
825
  ref: function ref(c) {
825
826
  return inputs.current[item.fieldName] = c;
826
827
  },
827
828
  isInvalid: invalid,
828
- defaultValue: _getDefaultValue(item),
829
- handleChange: handleChange,
830
- mutable: true,
831
- data: item,
832
- readOnly: readOnly || item.readOnly,
833
- hideRequiredAlert: hideRequiredAlert || item.hideRequiredAlert
829
+ item: item
834
830
  });
835
831
  }
836
- }), /*#__PURE__*/_react["default"].createElement(_componentErrorMessage["default"], {
837
- name: item.fieldName
838
- }));
832
+ });
839
833
  default:
840
834
  return getSimpleElement(item);
841
835
  }
@@ -846,10 +840,10 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
846
840
  }
847
841
  return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
848
842
  className: "react-survey-builder-form"
849
- }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form, (0, _extends2["default"])({
843
+ }, /*#__PURE__*/_react["default"].createElement(_reactHookForm.FormProvider, methods, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form, (0, _extends2["default"])({
850
844
  onSubmit: methods.handleSubmit(handleSubmit)
851
- }, formProps), items, /*#__PURE__*/_react["default"].createElement("div", {
845
+ }, formProps), fieldItems, /*#__PURE__*/_react["default"].createElement("div", {
852
846
  className: buttonClassName ? buttonClassName : 'btn-toolbar'
853
- }, !hideActions && handleRenderSubmit(), !hideActions && backAction && handleRenderBack()))));
847
+ }, !hideActions && handleRenderSubmit(), !hideActions && backAction && handleRenderBack())))));
854
848
  };
855
849
  var _default = exports["default"] = (0, _reactIntl.injectIntl)(ReactSurveyFormFields);