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