react-survey-builder 1.0.16 → 1.0.18
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.
- package/README.md +18 -16
- package/dist/186.index.js +1 -0
- package/dist/app.css +1 -1
- package/dist/app.css.map +1 -1
- package/dist/index.js +1 -1
- package/lib/dynamic-option-list.js +1 -1
- package/lib/fieldset/FieldSet.js +15 -17
- package/lib/form copy.js +622 -0
- package/lib/form-fields.js +201 -208
- package/lib/form.js +765 -534
- package/lib/index.js +3 -3
- package/lib/language-provider/locales/en-us.json +1 -0
- package/lib/multi-column/MultiColumnRow.js +25 -25
- package/lib/multi-column/dustbin.js +16 -16
- package/lib/multi-column/grip.js +6 -6
- package/lib/preview.js +41 -40
- package/lib/sortable-element.js +6 -6
- package/lib/sortable-form-elements.js +2 -0
- package/lib/stores/store.js +22 -22
- package/lib/survey-elements/component-drag-handle.js +6 -6
- package/lib/survey-elements/component-drag-layer.js +3 -3
- package/lib/survey-elements/component-drag-preview.js +1 -1
- package/lib/survey-elements/component-error-message.js +1 -0
- package/lib/survey-elements/component-header.js +5 -5
- package/lib/survey-elements/component-label.js +12 -6
- package/lib/survey-elements/custom-element.js +23 -12
- package/lib/survey-elements/header-bar.js +5 -5
- package/lib/survey-elements/index.js +817 -740
- package/lib/survey-elements/myxss.js +68 -1
- package/lib/survey-elements-edit.js +211 -53
- package/lib/toolbar-draggable-item.js +4 -4
- package/lib/toolbar.js +49 -18
- package/lib/utils/ipUtils.js +53 -0
- package/package.json +2 -3
- package/types/index.d.ts +5 -1
- package/dist/967.index.js +0 -1
- package/lib/survey-elements/date-picker.js +0 -272
- package/lib/utils/custom-date-picker.js +0 -93
package/lib/form.js
CHANGED
@@ -6,27 +6,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
});
|
7
7
|
exports["default"] = void 0;
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
10
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
11
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
12
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
13
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
14
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
15
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
16
10
|
var _react = _interopRequireDefault(require("react"));
|
17
11
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
18
|
-
var _fbemitter = require("fbemitter");
|
19
12
|
var _reactIntl = require("react-intl");
|
20
|
-
var _surveyValidator = _interopRequireDefault(require("./survey-validator"));
|
21
13
|
var _surveyElements = _interopRequireDefault(require("./survey-elements"));
|
22
14
|
var _multiColumn = require("./multi-column");
|
23
15
|
var _fieldset = require("./fieldset");
|
24
16
|
var _customElement = _interopRequireDefault(require("./survey-elements/custom-element"));
|
25
17
|
var _registry = _interopRequireDefault(require("./stores/registry"));
|
26
18
|
var _reactBootstrap = require("react-bootstrap");
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
var _reactHookForm = require("react-hook-form");
|
20
|
+
var _lodash = require("lodash");
|
21
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
22
|
+
var _reactPhoneNumberInput = require("react-phone-number-input");
|
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
|
+
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
|
+
* <FormFields />
|
30
26
|
*/
|
31
27
|
var Image = _surveyElements["default"].Image,
|
32
28
|
Checkboxes = _surveyElements["default"].Checkboxes,
|
@@ -34,593 +30,828 @@ var Image = _surveyElements["default"].Image,
|
|
34
30
|
Download = _surveyElements["default"].Download,
|
35
31
|
Camera = _surveyElements["default"].Camera,
|
36
32
|
FileUpload = _surveyElements["default"].FileUpload;
|
37
|
-
var ReactSurvey =
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
33
|
+
var ReactSurvey = function ReactSurvey(_ref) {
|
34
|
+
var _ref$validateForCorre = _ref.validateForCorrectness,
|
35
|
+
validateForCorrectness = _ref$validateForCorre === void 0 ? false : _ref$validateForCorre,
|
36
|
+
_ref$skipValidations = _ref.skipValidations,
|
37
|
+
skipValidations = _ref$skipValidations === void 0 ? false : _ref$skipValidations,
|
38
|
+
_ref$displayShort = _ref.displayShort,
|
39
|
+
displayShort = _ref$displayShort === void 0 ? false : _ref$displayShort,
|
40
|
+
_ref$hideRequiredAler = _ref.hideRequiredAlert,
|
41
|
+
hideRequiredAlert = _ref$hideRequiredAler === void 0 ? false : _ref$hideRequiredAler,
|
42
|
+
_ref$readOnly = _ref.readOnly,
|
43
|
+
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
44
|
+
downloadPath = _ref.downloadPath,
|
45
|
+
intl = _ref.intl,
|
46
|
+
answers = _ref.answers,
|
47
|
+
onSubmit = _ref.onSubmit,
|
48
|
+
onChange = _ref.onChange,
|
49
|
+
onBlur = _ref.onBlur,
|
50
|
+
items = _ref.items,
|
51
|
+
_ref$submitButton = _ref.submitButton,
|
52
|
+
submitButton = _ref$submitButton === void 0 ? false : _ref$submitButton,
|
53
|
+
_ref$backButton = _ref.backButton,
|
54
|
+
backButton = _ref$backButton === void 0 ? false : _ref$backButton,
|
55
|
+
_ref$actionName = _ref.actionName,
|
56
|
+
actionName = _ref$actionName === void 0 ? null : _ref$actionName,
|
57
|
+
_ref$backName = _ref.backName,
|
58
|
+
backName = _ref$backName === void 0 ? null : _ref$backName,
|
59
|
+
_ref$backAction = _ref.backAction,
|
60
|
+
backAction = _ref$backAction === void 0 ? null : _ref$backAction,
|
61
|
+
_ref$hideActions = _ref.hideActions,
|
62
|
+
hideActions = _ref$hideActions === void 0 ? false : _ref$hideActions,
|
63
|
+
formAction = _ref.formAction,
|
64
|
+
formMethod = _ref.formMethod,
|
65
|
+
variables = _ref.variables,
|
66
|
+
authenticity_token = _ref.authenticity_token,
|
67
|
+
task_id = _ref.task_id,
|
68
|
+
buttonClassName = _ref.buttonClassName,
|
69
|
+
formId = _ref.formId,
|
70
|
+
_ref$print = _ref.print,
|
71
|
+
print = _ref$print === void 0 ? false : _ref$print;
|
72
|
+
//#region useForms
|
75
73
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
result[x.name] = x.value;
|
95
|
-
}
|
96
|
-
} else {
|
97
|
-
result[x.name] = x.value;
|
98
|
-
}
|
99
|
-
});
|
100
|
-
return result;
|
101
|
-
}
|
102
|
-
return answers || {};
|
74
|
+
var methods = (0, _reactHookForm.useForm)({
|
75
|
+
mode: 'all',
|
76
|
+
reValidateMode: 'onChange',
|
77
|
+
criteriaMode: 'all',
|
78
|
+
shouldFocusError: true,
|
79
|
+
shouldUnregister: true
|
80
|
+
});
|
81
|
+
|
82
|
+
//#endregion
|
83
|
+
//#region helper functions
|
84
|
+
|
85
|
+
var _convert = function _convert($dataAnswers) {
|
86
|
+
if (Array.isArray($dataAnswers)) {
|
87
|
+
var result = {};
|
88
|
+
$dataAnswers.forEach(function (answer) {
|
89
|
+
result[answer.name] = answer.value;
|
90
|
+
});
|
91
|
+
return result;
|
103
92
|
}
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
93
|
+
return $dataAnswers || {};
|
94
|
+
};
|
95
|
+
var form = _react["default"].useRef();
|
96
|
+
var inputs = _react["default"].useRef({});
|
97
|
+
var answerData = _react["default"].useRef(_convert(answers));
|
98
|
+
var _getDefaultValue = function _getDefaultValue($dataItem) {
|
99
|
+
var defaultValue = answerData.current[$dataItem.fieldName];
|
100
|
+
if ($dataItem.element === 'DatePicker') {
|
101
|
+
var _$dataItem$defaultTod;
|
102
|
+
var defaultToday = (_$dataItem$defaultTod = $dataItem.defaultToday) !== null && _$dataItem$defaultTod !== void 0 ? _$dataItem$defaultTod : false;
|
103
|
+
var formatMask = $dataItem.formatMask || 'MM/DD/YYYY';
|
104
|
+
if (defaultToday && (defaultValue === '' || defaultValue === undefined)) {
|
105
|
+
defaultValue = (0, _momentTimezone["default"])().format(formatMask);
|
106
|
+
}
|
108
107
|
}
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
if (defaultValue) {
|
115
|
-
return defaultValue;
|
108
|
+
if ($dataItem.element === 'Checkbox') {
|
109
|
+
var _$dataItem$defaultChe;
|
110
|
+
var defaultChecked = (_$dataItem$defaultChe = $dataItem.defaultChecked) !== null && _$dataItem$defaultChe !== void 0 ? _$dataItem$defaultChe : false;
|
111
|
+
if (defaultChecked === true) {
|
112
|
+
defaultValue = true;
|
116
113
|
}
|
117
|
-
var defaultChecked = [];
|
118
|
-
item.options.forEach(function (option) {
|
119
|
-
if (_this2.answerData["option_".concat(option.key)]) {
|
120
|
-
defaultChecked.push(option.key);
|
121
|
-
}
|
122
|
-
});
|
123
|
-
return defaultChecked;
|
124
114
|
}
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
value: ''
|
131
|
-
};
|
132
|
-
if (item.element === 'Rating') {
|
133
|
-
$item.value = ref.inputField.current.state.rating;
|
134
|
-
} else if (item.element === 'Tags') {
|
135
|
-
$item.value = ref.state.value;
|
136
|
-
// } else if (item.element === 'DatePicker') {
|
137
|
-
// $item.value = ref.state.value;
|
138
|
-
} else if (item.element === 'Camera') {
|
139
|
-
$item.value = ref.state.img;
|
140
|
-
} else if (item.element === 'FileUpload') {
|
141
|
-
$item.value = ref.state.fileUpload;
|
142
|
-
} else if (ref && ref.inputField && ref.inputField.current) {
|
143
|
-
$item = _reactDom["default"].findDOMNode(ref.inputField.current);
|
144
|
-
if ($item && typeof $item.value === 'string') {
|
145
|
-
$item.value = $item.value.trim();
|
146
|
-
}
|
115
|
+
if (defaultValue === undefined) {
|
116
|
+
if ($dataItem.element === 'Checkboxes' || $dataItem.element === 'Tags') {
|
117
|
+
defaultValue = [];
|
118
|
+
} else {
|
119
|
+
defaultValue = '';
|
147
120
|
}
|
148
|
-
return $item;
|
149
121
|
}
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
122
|
+
return defaultValue;
|
123
|
+
};
|
124
|
+
var _optionsDefaultValue = function _optionsDefaultValue($dataItem) {
|
125
|
+
var defaultValue = _getDefaultValue($dataItem);
|
126
|
+
if (defaultValue) {
|
127
|
+
return defaultValue;
|
128
|
+
}
|
129
|
+
var defaultChecked = [];
|
130
|
+
$dataItem.options.forEach(function (option) {
|
131
|
+
if (answerData.current["option_".concat(option.key)]) {
|
132
|
+
defaultChecked.push(option.key);
|
133
|
+
}
|
134
|
+
});
|
135
|
+
return defaultChecked;
|
136
|
+
};
|
137
|
+
var _getItemValue = function _getItemValue($dataItem, ref) {
|
138
|
+
var $item = {
|
139
|
+
element: $dataItem.element,
|
140
|
+
value: ''
|
141
|
+
};
|
142
|
+
if ($dataItem.element === 'Rating') {
|
143
|
+
$item.value = ref.inputField.current.state.rating;
|
144
|
+
} else if ($dataItem.element === 'Tags') {
|
145
|
+
$item.value = ref.props.value;
|
146
|
+
// } else if (item.element === 'DatePicker') {
|
147
|
+
// $item.value = ref.state.value;
|
148
|
+
} else if ($dataItem.element === 'Camera') {
|
149
|
+
$item.value = ref.state.img;
|
150
|
+
} else if ($dataItem.element === 'FileUpload') {
|
151
|
+
$item.value = ref.state.fileUpload;
|
152
|
+
} else if ($dataItem.element === 'Signature') {
|
153
|
+
$item.value = ref.state.value;
|
154
|
+
} else if (ref && ref.inputField && ref.inputField.current) {
|
155
|
+
$item = _reactDom["default"].findDOMNode(ref.inputField.current);
|
156
|
+
if ($item && typeof $item.value === 'string') {
|
157
|
+
$item.value = $item.value.trim();
|
173
158
|
}
|
174
|
-
return incorrect;
|
175
159
|
}
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
checked_options += 1;
|
188
|
-
}
|
189
|
-
});
|
190
|
-
if (checked_options < 1) {
|
191
|
-
// errors.push(item.label + ' is required!');
|
192
|
-
invalid = true;
|
160
|
+
return $item;
|
161
|
+
};
|
162
|
+
var _isIncorrect = function _isIncorrect($dataItem) {
|
163
|
+
var incorrect = false;
|
164
|
+
if ($dataItem.canHaveAnswer) {
|
165
|
+
var ref = inputs.current[$dataItem.fieldName];
|
166
|
+
if ($dataItem.element === 'Checkboxes' || $dataItem.element === 'RadioButtons') {
|
167
|
+
$dataItem.options.forEach(function (option) {
|
168
|
+
var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
|
169
|
+
if (option.hasOwnProperty('correct') && !$option.checked || !option.hasOwnProperty('correct') && $option.checked) {
|
170
|
+
incorrect = true;
|
193
171
|
}
|
194
|
-
}
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
} else if ($item.value === undefined || $item.value.length < 1) {
|
201
|
-
invalid = true;
|
172
|
+
});
|
173
|
+
} else {
|
174
|
+
var $item = _getItemValue($dataItem, ref);
|
175
|
+
if ($dataItem.element === 'Rating') {
|
176
|
+
if ($item.value.toString() !== $dataItem.correct) {
|
177
|
+
incorrect = true;
|
202
178
|
}
|
179
|
+
} else if ($item.value.toLowerCase() !== $dataItem.correct.trim().toLowerCase()) {
|
180
|
+
incorrect = true;
|
203
181
|
}
|
204
182
|
}
|
205
|
-
return invalid;
|
206
183
|
}
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
};
|
217
|
-
if (!itemData.name) return null;
|
218
|
-
var ref = this.inputs[item.fieldName];
|
219
|
-
if (item.element === 'Checkboxes') {
|
220
|
-
var checkedOptions = [];
|
221
|
-
item.options.forEach(function (option) {
|
222
|
-
var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
|
223
|
-
if ($option.checked) {
|
224
|
-
checkedOptions.push(option.value);
|
225
|
-
}
|
226
|
-
});
|
227
|
-
itemData.value = checkedOptions;
|
228
|
-
} else if (item.element === 'RadioButtons') {
|
229
|
-
item.options.forEach(function (option) {
|
184
|
+
return incorrect;
|
185
|
+
};
|
186
|
+
var _isInvalid = function _isInvalid($dataItem) {
|
187
|
+
var invalid = false;
|
188
|
+
if ($dataItem.required === true) {
|
189
|
+
var ref = inputs.current[$dataItem.fieldName];
|
190
|
+
if ($dataItem.element === 'Checkboxes' || $dataItem.element === 'RadioButtons') {
|
191
|
+
var checked_options = 0;
|
192
|
+
$dataItem.options.forEach(function (option) {
|
230
193
|
var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
|
231
194
|
if ($option.checked) {
|
232
|
-
|
195
|
+
checked_options += 1;
|
233
196
|
}
|
234
197
|
});
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
} else {
|
239
|
-
itemData.value = ref.inputField.current.checked;
|
198
|
+
if (checked_options < 1) {
|
199
|
+
// errors.push(item.label + ' is required!');
|
200
|
+
invalid = true;
|
240
201
|
}
|
241
202
|
} else {
|
242
|
-
|
243
|
-
|
203
|
+
var $item = _getItemValue($dataItem, ref);
|
204
|
+
if ($dataItem.element === 'Rating') {
|
205
|
+
if ($item.value === 0) {
|
206
|
+
invalid = true;
|
207
|
+
}
|
208
|
+
} else if ($item.value === undefined || $item.value.length < 1) {
|
209
|
+
invalid = true;
|
210
|
+
}
|
244
211
|
}
|
245
|
-
itemData.required = item.required || false;
|
246
|
-
return itemData;
|
247
212
|
}
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
213
|
+
return invalid;
|
214
|
+
};
|
215
|
+
var _collect = function _collect($dataItem) {
|
216
|
+
var itemData = {
|
217
|
+
id: $dataItem.id,
|
218
|
+
name: $dataItem.fieldName,
|
219
|
+
customName: $dataItem.customName || $dataItem.fieldName,
|
220
|
+
label: $dataItem.label !== null && $dataItem.label !== undefined && $dataItem.label !== '' ? $dataItem.label.trim() : ''
|
221
|
+
};
|
222
|
+
if (!itemData.name) return null;
|
223
|
+
var ref = inputs.current[$dataItem.fieldName];
|
224
|
+
if ($dataItem.element === 'Checkboxes') {
|
225
|
+
var checkedOptions = [];
|
226
|
+
$dataItem.options.forEach(function (option) {
|
227
|
+
var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
|
228
|
+
if ($option.checked) {
|
229
|
+
checkedOptions.push(option.value);
|
257
230
|
}
|
258
231
|
});
|
259
|
-
|
260
|
-
}
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
var $canvas_sig = ref.canvas.current;
|
266
|
-
if ($canvas_sig) {
|
267
|
-
var base64 = $canvas_sig.toDataURL().replace('data:image/png;base64,', '');
|
268
|
-
var isEmpty = $canvas_sig.isEmpty();
|
269
|
-
var $input_sig = _reactDom["default"].findDOMNode(ref.inputField.current);
|
270
|
-
if (isEmpty) {
|
271
|
-
$input_sig.value = '';
|
272
|
-
} else {
|
273
|
-
$input_sig.value = base64;
|
232
|
+
itemData.value = checkedOptions;
|
233
|
+
} else if ($dataItem.element === 'RadioButtons') {
|
234
|
+
$dataItem.options.forEach(function (option) {
|
235
|
+
var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
|
236
|
+
if ($option.checked) {
|
237
|
+
itemData.value = option.value;
|
274
238
|
}
|
239
|
+
});
|
240
|
+
} else if ($dataItem.element === 'Checkbox') {
|
241
|
+
if (!ref || !ref.inputField || !ref.inputField.current) {
|
242
|
+
itemData.value = false;
|
243
|
+
} else {
|
244
|
+
itemData.value = ref.inputField.current.checked;
|
275
245
|
}
|
246
|
+
} else {
|
247
|
+
if (!ref) return null;
|
248
|
+
itemData.value = _getItemValue($dataItem, ref).value;
|
276
249
|
}
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
250
|
+
itemData.required = $dataItem.required || false;
|
251
|
+
return itemData;
|
252
|
+
};
|
253
|
+
var _collectFormData = function _collectFormData($dataItems) {
|
254
|
+
var formData = [];
|
255
|
+
$dataItems.forEach(function (item) {
|
256
|
+
var itemData = _collect(item);
|
257
|
+
if (itemData) {
|
258
|
+
formData.push(itemData);
|
286
259
|
}
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
260
|
+
});
|
261
|
+
return formData;
|
262
|
+
};
|
263
|
+
var _getSignatureImg = function _getSignatureImg($dataItem) {
|
264
|
+
var ref = inputs.current[$dataItem.fieldName];
|
265
|
+
var $canvas_sig = ref.canvas.current;
|
266
|
+
if ($canvas_sig) {
|
267
|
+
var base64 = $canvas_sig.toDataURL().replace('data:image/png;base64,', '');
|
268
|
+
var _isEmpty = $canvas_sig.isEmpty();
|
269
|
+
var $input_sig = _reactDom["default"].findDOMNode(ref.inputField.current);
|
270
|
+
if (_isEmpty) {
|
271
|
+
$input_sig.value = '';
|
272
|
+
methods.setValue($dataItem.fieldName, '');
|
273
|
+
} else {
|
274
|
+
$input_sig.value = base64;
|
275
|
+
methods.setValue($dataItem.fieldName, base64);
|
298
276
|
}
|
299
277
|
}
|
300
|
-
}
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
278
|
+
};
|
279
|
+
|
280
|
+
//#endregion
|
281
|
+
//#region form methods
|
282
|
+
|
283
|
+
var handleSubmit = function handleSubmit($formData, event) {
|
284
|
+
event.preventDefault();
|
285
|
+
console.log('handleSubmit', $formData);
|
286
|
+
var errors = [];
|
287
|
+
if (!skipValidations) {
|
288
|
+
errors = validateForm();
|
289
|
+
// Publish errors, if any.
|
290
|
+
//emitter.emit('surveyValidation', errors);
|
309
291
|
}
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
292
|
+
|
293
|
+
// Only submit if there are no errors.
|
294
|
+
if (errors.length < 1) {
|
295
|
+
if (onSubmit) {
|
296
|
+
var $data = _collectFormData(items);
|
297
|
+
onSubmit($data);
|
298
|
+
} else {
|
299
|
+
var $form = _reactDom["default"].findDOMNode(form.current);
|
300
|
+
$form.submit();
|
318
301
|
}
|
319
302
|
}
|
320
|
-
}
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
var
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
303
|
+
};
|
304
|
+
var handleChange = function handleChange(event) {
|
305
|
+
// console.log('handleChange');
|
306
|
+
// Call submit function on change
|
307
|
+
if (onChange) {
|
308
|
+
var $data = _collectFormData(items);
|
309
|
+
onChange($data);
|
310
|
+
}
|
311
|
+
};
|
312
|
+
var validateForm = function validateForm() {
|
313
|
+
var errors = [];
|
314
|
+
var dataItems = items;
|
315
|
+
if (displayShort) {
|
316
|
+
dataItems = items.filter(function (i) {
|
317
|
+
return i.alternateForm === true;
|
318
|
+
});
|
319
|
+
}
|
320
|
+
dataItems.forEach(function (item) {
|
321
|
+
if (item.element === 'Signature') {
|
322
|
+
_getSignatureImg(item);
|
331
323
|
}
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
}
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
return email.match(
|
347
|
-
// eslint-disable-next-line no-useless-escape
|
348
|
-
/^(([^<>()[\]\\.,;:\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,}))$/);
|
349
|
-
};
|
350
|
-
var checkEmail = validateEmail(emailValue);
|
351
|
-
if (!checkEmail) {
|
352
|
-
errors.push("".concat(item.label, " ").concat(intl.formatMessage({
|
353
|
-
id: 'message.invalid-email'
|
354
|
-
})));
|
355
|
-
}
|
324
|
+
if (_isInvalid(item)) {
|
325
|
+
errors.push("".concat(item.label, " ").concat(intl.formatMessage({
|
326
|
+
id: 'message.is-required'
|
327
|
+
}), "!"));
|
328
|
+
}
|
329
|
+
if (item.element === 'EmailInput') {
|
330
|
+
var ref = inputs.current[item.fieldName];
|
331
|
+
var emailValue = _getItemValue(item, ref).value;
|
332
|
+
if (emailValue) {
|
333
|
+
var checkEmail = validateEmail(emailValue);
|
334
|
+
if (!checkEmail) {
|
335
|
+
errors.push("".concat(item.label, " ").concat(intl.formatMessage({
|
336
|
+
id: 'message.invalid-email'
|
337
|
+
})));
|
356
338
|
}
|
357
339
|
}
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
if (!checkPhone) {
|
369
|
-
errors.push("".concat(item.label, " ").concat(intl.formatMessage({
|
370
|
-
id: 'message.invalid-phone-number'
|
371
|
-
})));
|
372
|
-
}
|
340
|
+
}
|
341
|
+
if (item.element === 'PhoneNumber') {
|
342
|
+
var _ref2 = inputs.current[item.fieldName];
|
343
|
+
var phoneValue = _getItemValue(item, _ref2).value;
|
344
|
+
if (phoneValue) {
|
345
|
+
var checkPhone = validatePhone(phoneValue);
|
346
|
+
if (!checkPhone) {
|
347
|
+
errors.push("".concat(item.label, " ").concat(intl.formatMessage({
|
348
|
+
id: 'message.invalid-phone-number'
|
349
|
+
})));
|
373
350
|
}
|
374
351
|
}
|
375
|
-
|
376
|
-
|
352
|
+
}
|
353
|
+
if (validateForCorrectness && _isIncorrect(item)) {
|
354
|
+
methods.setError(item.fieldName, {
|
355
|
+
type: 'incorrect',
|
356
|
+
message: "".concat(item.label, " ").concat(intl.formatMessage({
|
377
357
|
id: 'message.was-answered-incorrectly'
|
378
|
-
})
|
379
|
-
}
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
358
|
+
}))
|
359
|
+
});
|
360
|
+
errors.push("".concat(item.label, " ").concat(intl.formatMessage({
|
361
|
+
id: 'message.was-answered-incorrectly'
|
362
|
+
}), "!"));
|
363
|
+
}
|
364
|
+
});
|
365
|
+
return errors;
|
366
|
+
};
|
367
|
+
var validateEmail = function validateEmail(email) {
|
368
|
+
return email.match(
|
369
|
+
// eslint-disable-next-line no-useless-escape
|
370
|
+
/^(([^<>()[\]\\.,;:\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,}))$/);
|
371
|
+
};
|
372
|
+
var toE164PhoneNumber = function toE164PhoneNumber(phoneNumberValue) {
|
373
|
+
if (phoneNumberValue !== undefined && phoneNumberValue !== null) {
|
374
|
+
//Filter only numbers from the input
|
375
|
+
var cleaned = ('' + phoneNumberValue).replace(/\D/g, '');
|
376
|
+
|
377
|
+
//Check if the input is of correct
|
378
|
+
var match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/);
|
379
|
+
if (match) {
|
380
|
+
//Remove the matched extension code
|
381
|
+
//Change this to format for any country code.
|
382
|
+
var intlCode = match[1] ? '+1' : '+1';
|
383
|
+
return [intlCode, match[2], match[3], match[4]].join('');
|
384
|
+
}
|
385
|
+
return '';
|
386
|
+
} else {
|
387
|
+
return '';
|
390
388
|
}
|
391
|
-
}
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
389
|
+
};
|
390
|
+
var validatePhone = function validatePhone(phone) {
|
391
|
+
return (0, _reactPhoneNumberInput.isValidPhoneNumber)(toE164PhoneNumber(phone), 'US');
|
392
|
+
};
|
393
|
+
var validateDate = function validateDate(dateString) {
|
394
|
+
if (dateString !== undefined && dateString !== null && dateString !== "") {
|
395
|
+
var dateformat = /^(0?[1-9]|1[0-2])[\/](0?[1-9]|[1-2][0-9]|3[01])[\/]\d{4}$/;
|
396
|
+
|
397
|
+
// Matching the date through regular expression
|
398
|
+
if (dateString.match(dateformat)) {
|
399
|
+
var operator = dateString.split('/');
|
400
|
+
|
401
|
+
// Extract the string into month, date and year
|
402
|
+
var datepart = [];
|
403
|
+
if (operator.length > 1) {
|
404
|
+
datepart = dateString.split('/');
|
405
|
+
}
|
406
|
+
var month = parseInt(datepart[0]);
|
407
|
+
var day = parseInt(datepart[1]);
|
408
|
+
var year = parseInt(datepart[2]);
|
409
|
+
if (day > 31 || day < 1) {
|
410
|
+
return false;
|
411
|
+
}
|
412
|
+
var currentYear = new Date().getFullYear();
|
413
|
+
if (year < 1900 || year > currentYear + 5) {
|
414
|
+
return false;
|
415
|
+
}
|
416
|
+
|
417
|
+
// Create a list of days of a month
|
418
|
+
var ListofDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
419
|
+
if (month === 1 || month > 2) {
|
420
|
+
if (day > ListofDays[month - 1]) {
|
421
|
+
// to check if the date is out of range
|
422
|
+
return false;
|
423
|
+
}
|
424
|
+
} else if (month === 2) {
|
425
|
+
var leapYear = false;
|
426
|
+
if (!(year % 4) && year % 100 || !(year % 400)) leapYear = true;
|
427
|
+
if (leapYear === false && day >= 29) return false;else if (leapYear === true && day > 29) {
|
428
|
+
// console.log('Invalid date format!');
|
429
|
+
return false;
|
430
|
+
}
|
431
|
+
} else if (month > 12 || month < 1) {
|
432
|
+
return false;
|
433
|
+
}
|
434
|
+
} else {
|
435
|
+
// console.log("Invalid date format!");
|
436
|
+
return false;
|
397
437
|
}
|
398
|
-
var Input = _surveyElements["default"][item.element];
|
399
|
-
return /*#__PURE__*/_react["default"].createElement(Input, {
|
400
|
-
handleChange: this.handleChange,
|
401
|
-
ref: function ref(c) {
|
402
|
-
return _this5.inputs[item.fieldName] = c;
|
403
|
-
},
|
404
|
-
mutable: true,
|
405
|
-
key: "form_".concat(item.id),
|
406
|
-
data: item,
|
407
|
-
readOnly: this.props.readOnly,
|
408
|
-
hideRequiredAlert: this.props.hideRequiredAlert || item.hideRequiredAlert,
|
409
|
-
defaultValue: this._getDefaultValue(item)
|
410
|
-
});
|
411
438
|
}
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
return
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
439
|
+
return true;
|
440
|
+
};
|
441
|
+
var getDataItemById = function getDataItemById(id) {
|
442
|
+
var $dataItem = items.find(function (x) {
|
443
|
+
return x.id === id;
|
444
|
+
});
|
445
|
+
if ($dataItem !== undefined) {
|
446
|
+
return _objectSpread(_objectSpread({}, $dataItem), {}, {
|
447
|
+
fieldRules: getFieldRules($dataItem),
|
448
|
+
print: print !== null && print !== void 0 ? print : false,
|
449
|
+
hideRequiredAlert: hideRequiredAlert || $dataItem.hideRequiredAlert,
|
450
|
+
readOnly: readOnly || $dataItem.readOnly,
|
451
|
+
disabled: $dataItem.readOnly,
|
452
|
+
mutable: true
|
425
453
|
});
|
426
454
|
}
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
key: "form_".concat(item.id),
|
434
|
-
data: item,
|
435
|
-
hideRequiredAlert: this.props.hideRequiredAlert || item.hideRequiredAlert
|
436
|
-
});
|
455
|
+
return null;
|
456
|
+
};
|
457
|
+
var getInputElement = function getInputElement(item) {
|
458
|
+
if (!item) return null;
|
459
|
+
if (item.custom) {
|
460
|
+
return getCustomElement(item);
|
437
461
|
}
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
462
|
+
var Input = _surveyElements["default"][item.element];
|
463
|
+
return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
|
464
|
+
key: "form_".concat(item.id),
|
465
|
+
control: methods.control,
|
466
|
+
name: item.fieldName,
|
467
|
+
rules: item.fieldRules,
|
468
|
+
defaultValue: _getDefaultValue(item),
|
469
|
+
disabled: item.disabled,
|
470
|
+
required: item.required,
|
471
|
+
render: function render(_ref3) {
|
472
|
+
var _ref3$field = _ref3.field,
|
473
|
+
_onChange = _ref3$field.onChange,
|
474
|
+
onBlur = _ref3$field.onBlur,
|
475
|
+
value = _ref3$field.value,
|
476
|
+
name = _ref3$field.name,
|
477
|
+
ref = _ref3$field.ref,
|
478
|
+
_ref3$fieldState = _ref3.fieldState,
|
479
|
+
invalid = _ref3$fieldState.invalid,
|
480
|
+
isTouched = _ref3$fieldState.isTouched,
|
481
|
+
isDirty = _ref3$fieldState.isDirty,
|
482
|
+
error = _ref3$fieldState.error,
|
483
|
+
formState = _ref3.formState;
|
484
|
+
return /*#__PURE__*/_react["default"].createElement(Input, {
|
485
|
+
onBlur: onBlur,
|
486
|
+
onChange: function onChange(e) {
|
487
|
+
_onChange(e);
|
488
|
+
handleChange(e);
|
489
|
+
},
|
490
|
+
value: value,
|
491
|
+
name: name,
|
492
|
+
ref: function ref(c) {
|
493
|
+
return inputs.current[item.fieldName] = c;
|
494
|
+
},
|
495
|
+
isInvalid: invalid,
|
496
|
+
item: item
|
497
|
+
});
|
498
|
+
}
|
499
|
+
});
|
500
|
+
};
|
501
|
+
var getContainerElement = function getContainerElement(item, Element) {
|
502
|
+
var controls = item.childItems.map(function (childItem) {
|
503
|
+
return childItem ? getInputElement(getDataItemById(childItem)) : /*#__PURE__*/_react["default"].createElement("div", null, "\xA0");
|
504
|
+
});
|
505
|
+
return /*#__PURE__*/_react["default"].createElement(Element, {
|
506
|
+
mutable: true,
|
507
|
+
key: "form_".concat(item.id),
|
508
|
+
item: item,
|
509
|
+
controls: controls
|
510
|
+
});
|
511
|
+
};
|
512
|
+
var getSimpleElement = function getSimpleElement(item) {
|
513
|
+
var Element = _surveyElements["default"][item.element];
|
514
|
+
return /*#__PURE__*/_react["default"].createElement(Element, {
|
515
|
+
mutable: true,
|
516
|
+
key: "form_".concat(item.id),
|
517
|
+
item: item
|
518
|
+
});
|
519
|
+
};
|
520
|
+
var getCustomElement = function getCustomElement(item) {
|
521
|
+
if (!item.component || typeof item.component !== 'function') {
|
522
|
+
item.component = _registry["default"].get(item.key);
|
523
|
+
if (!item.component) {
|
524
|
+
console.error("".concat(item.element, " ").concat(intl.formatMessage({
|
525
|
+
id: 'message.was-not-registered'
|
526
|
+
})));
|
450
527
|
}
|
451
|
-
var inputProps = item.forwardRef && {
|
452
|
-
handleChange: this.handleChange,
|
453
|
-
defaultValue: this._getDefaultValue(item),
|
454
|
-
ref: function ref(c) {
|
455
|
-
return _this7.inputs[item.fieldName] = c;
|
456
|
-
}
|
457
|
-
};
|
458
|
-
return /*#__PURE__*/_react["default"].createElement(_customElement["default"], (0, _extends2["default"])({
|
459
|
-
mutable: true,
|
460
|
-
readOnly: this.props.readOnly,
|
461
|
-
hideRequiredAlert: this.props.hideRequiredAlert || item.hideRequiredAlert,
|
462
|
-
key: "form_".concat(item.id),
|
463
|
-
data: item
|
464
|
-
}, inputProps));
|
465
528
|
}
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
529
|
+
return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
|
530
|
+
key: "form_".concat(item.id),
|
531
|
+
control: methods.control,
|
532
|
+
name: item.fieldName,
|
533
|
+
rules: item.fieldRules,
|
534
|
+
defaultValue: _getDefaultValue(item),
|
535
|
+
disabled: item.disabled,
|
536
|
+
required: item.required,
|
537
|
+
render: function render(_ref4) {
|
538
|
+
var _ref4$field = _ref4.field,
|
539
|
+
_onChange2 = _ref4$field.onChange,
|
540
|
+
onBlur = _ref4$field.onBlur,
|
541
|
+
value = _ref4$field.value,
|
542
|
+
name = _ref4$field.name,
|
543
|
+
ref = _ref4$field.ref,
|
544
|
+
_ref4$fieldState = _ref4.fieldState,
|
545
|
+
invalid = _ref4$fieldState.invalid,
|
546
|
+
isTouched = _ref4$fieldState.isTouched,
|
547
|
+
isDirty = _ref4$fieldState.isDirty,
|
548
|
+
error = _ref4$fieldState.error,
|
549
|
+
formState = _ref4.formState;
|
550
|
+
return /*#__PURE__*/_react["default"].createElement(_customElement["default"], {
|
551
|
+
onBlur: onBlur,
|
552
|
+
onChange: function onChange(e) {
|
553
|
+
_onChange2(e);
|
554
|
+
handleChange(e);
|
555
|
+
},
|
556
|
+
value: value,
|
557
|
+
name: name,
|
558
|
+
ref: function ref(c) {
|
559
|
+
return inputs.current[item.fieldName] = c;
|
560
|
+
},
|
561
|
+
isInvalid: invalid,
|
562
|
+
item: item
|
474
563
|
});
|
475
564
|
}
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
565
|
+
});
|
566
|
+
};
|
567
|
+
var getFieldRules = function getFieldRules(item) {
|
568
|
+
var fieldRules = {};
|
569
|
+
if (item.fieldRules !== undefined && item.fieldRules !== null && !(0, _lodash.isEmpty)(item.fieldRules)) {
|
570
|
+
fieldRules = _objectSpread({}, item.fieldRules);
|
571
|
+
}
|
572
|
+
if (item.required) {
|
573
|
+
fieldRules.required = "".concat(item.label, " ").concat(intl.formatMessage({
|
574
|
+
id: 'message.is-required'
|
575
|
+
}));
|
576
|
+
}
|
577
|
+
switch (item.element) {
|
578
|
+
case 'EmailInput':
|
579
|
+
fieldRules.minLength = {
|
580
|
+
value: 4,
|
581
|
+
message: "".concat(item.label, " must be at least 4 characters long")
|
582
|
+
};
|
583
|
+
fieldRules.validate = function (value) {
|
584
|
+
return validateEmail(value) || "".concat(item.label, " ").concat(intl.formatMessage({
|
585
|
+
id: 'message.invalid-email'
|
586
|
+
}));
|
587
|
+
};
|
588
|
+
break;
|
589
|
+
case 'PhoneNumber':
|
590
|
+
fieldRules.validate = function (value) {
|
591
|
+
return validatePhone(value) || "".concat(item.label, " ").concat(intl.formatMessage({
|
592
|
+
id: 'message.invalid-phone-number'
|
593
|
+
}));
|
594
|
+
};
|
595
|
+
break;
|
596
|
+
case 'DatePicker':
|
597
|
+
fieldRules.validate = function (value) {
|
598
|
+
return validateDate(value) || "".concat(item.label, " ").concat(intl.formatMessage({
|
599
|
+
id: 'message.invalid-date'
|
600
|
+
}));
|
601
|
+
};
|
602
|
+
break;
|
603
|
+
default:
|
604
|
+
break;
|
605
|
+
}
|
606
|
+
return fieldRules;
|
607
|
+
};
|
608
|
+
var handleRenderSubmit = function handleRenderSubmit() {
|
609
|
+
var actionName = actionName || 'Submit';
|
610
|
+
var buttonProps = {};
|
611
|
+
if (formId) {
|
612
|
+
buttonProps.form = formId;
|
613
|
+
}
|
614
|
+
return submitButton || /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Button, {
|
615
|
+
variant: "primary",
|
616
|
+
type: "submit"
|
617
|
+
}, actionName);
|
618
|
+
};
|
619
|
+
var handleRenderBack = function handleRenderBack() {
|
620
|
+
var backName = backName || 'Cancel';
|
621
|
+
return backButton || /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Button, {
|
622
|
+
variant: "secondary",
|
623
|
+
onClick: backAction,
|
624
|
+
className: "btn-cancel"
|
625
|
+
}, backName);
|
626
|
+
};
|
627
|
+
|
628
|
+
//#endregion
|
629
|
+
|
630
|
+
var dataItems = items;
|
631
|
+
if (displayShort) {
|
632
|
+
dataItems = items.filter(function (i) {
|
633
|
+
return i.alternateForm === true;
|
634
|
+
});
|
635
|
+
}
|
636
|
+
dataItems.forEach(function (item) {
|
637
|
+
if (item && item.readOnly && item.variableKey && variables[item.variableKey]) {
|
638
|
+
answerData.current[item.fieldName] = variables[item.variableKey];
|
639
|
+
}
|
640
|
+
});
|
641
|
+
var fieldItems = dataItems.filter(function (x) {
|
642
|
+
return !x.parentId;
|
643
|
+
}).map(function (item) {
|
644
|
+
if (!item) return null;
|
645
|
+
item.fieldRules = getFieldRules(item);
|
646
|
+
item.print = print !== null && print !== void 0 ? print : false;
|
647
|
+
item.hideRequiredAlert = hideRequiredAlert || item.hideRequiredAlert;
|
648
|
+
item.readOnly = readOnly || item.readOnly;
|
649
|
+
item.disabled = item.readOnly;
|
650
|
+
item.mutable = true;
|
651
|
+
switch (item.element) {
|
652
|
+
case 'TextInput':
|
653
|
+
case 'EmailInput':
|
654
|
+
case 'PhoneNumber':
|
655
|
+
case 'NumberInput':
|
656
|
+
case 'TextArea':
|
657
|
+
case 'Dropdown':
|
658
|
+
case 'DatePicker':
|
659
|
+
case 'RadioButtons':
|
660
|
+
case 'Rating':
|
661
|
+
case 'Tags':
|
662
|
+
case 'Range':
|
663
|
+
case 'Checkbox':
|
664
|
+
return getInputElement(item);
|
665
|
+
case 'CustomElement':
|
666
|
+
return getCustomElement(item);
|
667
|
+
case 'MultiColumnRow':
|
668
|
+
return getContainerElement(item, _multiColumn.MultiColumnRow);
|
669
|
+
case 'ThreeColumnRow':
|
670
|
+
return getContainerElement(item, _multiColumn.ThreeColumnRow);
|
671
|
+
case 'TwoColumnRow':
|
672
|
+
return getContainerElement(item, _multiColumn.TwoColumnRow);
|
673
|
+
case 'FieldSet':
|
674
|
+
return getContainerElement(item, _fieldset.FieldSet);
|
675
|
+
case 'Signature':
|
676
|
+
return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
|
677
|
+
key: "form_".concat(item.id),
|
678
|
+
control: methods.control,
|
679
|
+
name: item.fieldName,
|
680
|
+
rules: item.fieldRules,
|
681
|
+
defaultValue: _getDefaultValue(item),
|
682
|
+
disabled: item.disabled,
|
683
|
+
required: item.required,
|
684
|
+
render: function render(_ref5) {
|
685
|
+
var _ref5$field = _ref5.field,
|
686
|
+
_onChange3 = _ref5$field.onChange,
|
687
|
+
onBlur = _ref5$field.onBlur,
|
688
|
+
value = _ref5$field.value,
|
689
|
+
name = _ref5$field.name,
|
690
|
+
ref = _ref5$field.ref,
|
691
|
+
_ref5$fieldState = _ref5.fieldState,
|
692
|
+
invalid = _ref5$fieldState.invalid,
|
693
|
+
isTouched = _ref5$fieldState.isTouched,
|
694
|
+
isDirty = _ref5$fieldState.isDirty,
|
695
|
+
error = _ref5$fieldState.error,
|
696
|
+
formState = _ref5.formState;
|
510
697
|
return /*#__PURE__*/_react["default"].createElement(Signature, {
|
698
|
+
methods: methods,
|
699
|
+
onBlur: onBlur,
|
700
|
+
onChange: function onChange(e) {
|
701
|
+
_onChange3(e);
|
702
|
+
handleChange(e);
|
703
|
+
},
|
704
|
+
value: value,
|
705
|
+
name: name,
|
511
706
|
ref: function ref(c) {
|
512
|
-
return
|
707
|
+
return inputs.current[item.fieldName] = c;
|
513
708
|
},
|
514
|
-
|
515
|
-
mutable: true,
|
516
|
-
key: "form_".concat(item.id),
|
517
|
-
data: item,
|
518
|
-
defaultValue: _this8._getDefaultValue(item)
|
709
|
+
item: item
|
519
710
|
});
|
520
|
-
|
711
|
+
}
|
712
|
+
});
|
713
|
+
case 'Checkboxes':
|
714
|
+
return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
|
715
|
+
key: "form_".concat(item.id),
|
716
|
+
control: methods.control,
|
717
|
+
name: item.fieldName,
|
718
|
+
rules: item.fieldRules,
|
719
|
+
defaultValue: _optionsDefaultValue(item),
|
720
|
+
disabled: item.disabled,
|
721
|
+
required: item.required,
|
722
|
+
render: function render(_ref6) {
|
723
|
+
var _ref6$field = _ref6.field,
|
724
|
+
_onChange4 = _ref6$field.onChange,
|
725
|
+
onBlur = _ref6$field.onBlur,
|
726
|
+
value = _ref6$field.value,
|
727
|
+
name = _ref6$field.name,
|
728
|
+
ref = _ref6$field.ref,
|
729
|
+
_ref6$fieldState = _ref6.fieldState,
|
730
|
+
invalid = _ref6$fieldState.invalid,
|
731
|
+
isTouched = _ref6$fieldState.isTouched,
|
732
|
+
isDirty = _ref6$fieldState.isDirty,
|
733
|
+
error = _ref6$fieldState.error,
|
734
|
+
formState = _ref6.formState;
|
521
735
|
return /*#__PURE__*/_react["default"].createElement(Checkboxes, {
|
522
|
-
|
523
|
-
|
736
|
+
onBlur: onBlur,
|
737
|
+
onChange: function onChange(e) {
|
738
|
+
_onChange4(e);
|
739
|
+
handleChange(e);
|
524
740
|
},
|
525
|
-
|
526
|
-
|
527
|
-
mutable: true,
|
528
|
-
key: "form_".concat(item.id),
|
529
|
-
data: item,
|
530
|
-
defaultValue: _this8._optionsDefaultValue(item),
|
531
|
-
hideRequiredAlert: _this8.props.hideRequiredAlert || item.hideRequiredAlert
|
532
|
-
});
|
533
|
-
case 'Image':
|
534
|
-
return /*#__PURE__*/_react["default"].createElement(Image, {
|
741
|
+
value: value,
|
742
|
+
name: name,
|
535
743
|
ref: function ref(c) {
|
536
|
-
return
|
744
|
+
return inputs.current[item.fieldName] = c;
|
537
745
|
},
|
538
|
-
|
539
|
-
|
540
|
-
key: "form_".concat(item.id),
|
541
|
-
data: item,
|
542
|
-
defaultValue: _this8._getDefaultValue(item),
|
543
|
-
hideRequiredAlert: _this8.props.hideRequiredAlert || item.hideRequiredAlert
|
544
|
-
});
|
545
|
-
case 'Download':
|
546
|
-
return /*#__PURE__*/_react["default"].createElement(Download, {
|
547
|
-
downloadPath: _this8.props.downloadPath,
|
548
|
-
mutable: true,
|
549
|
-
key: "form_".concat(item.id),
|
550
|
-
data: item,
|
551
|
-
hideRequiredAlert: _this8.props.hideRequiredAlert || item.hideRequiredAlert
|
746
|
+
isInvalid: invalid,
|
747
|
+
item: item
|
552
748
|
});
|
553
|
-
|
749
|
+
}
|
750
|
+
});
|
751
|
+
case 'Image':
|
752
|
+
return /*#__PURE__*/_react["default"].createElement(Image, {
|
753
|
+
ref: function ref(c) {
|
754
|
+
return inputs.current[item.fieldName] = c;
|
755
|
+
},
|
756
|
+
key: "form_".concat(item.id),
|
757
|
+
item: item
|
758
|
+
});
|
759
|
+
case 'Download':
|
760
|
+
return /*#__PURE__*/_react["default"].createElement(Download, {
|
761
|
+
downloadPath: downloadPath,
|
762
|
+
key: "form_".concat(item.id),
|
763
|
+
item: item
|
764
|
+
});
|
765
|
+
case 'Camera':
|
766
|
+
return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
|
767
|
+
key: "form_".concat(item.id),
|
768
|
+
control: methods.control,
|
769
|
+
name: item.fieldName,
|
770
|
+
rules: item.fieldRules,
|
771
|
+
defaultValue: _getDefaultValue(item),
|
772
|
+
disabled: item.disabled,
|
773
|
+
required: item.required,
|
774
|
+
render: function render(_ref7) {
|
775
|
+
var _ref7$field = _ref7.field,
|
776
|
+
_onChange5 = _ref7$field.onChange,
|
777
|
+
onBlur = _ref7$field.onBlur,
|
778
|
+
value = _ref7$field.value,
|
779
|
+
name = _ref7$field.name,
|
780
|
+
ref = _ref7$field.ref,
|
781
|
+
_ref7$fieldState = _ref7.fieldState,
|
782
|
+
invalid = _ref7$fieldState.invalid,
|
783
|
+
isTouched = _ref7$fieldState.isTouched,
|
784
|
+
isDirty = _ref7$fieldState.isDirty,
|
785
|
+
error = _ref7$fieldState.error,
|
786
|
+
formState = _ref7.formState;
|
554
787
|
return /*#__PURE__*/_react["default"].createElement(Camera, {
|
788
|
+
onBlur: onBlur,
|
789
|
+
onChange: function onChange(e) {
|
790
|
+
_onChange5(e);
|
791
|
+
handleChange(e);
|
792
|
+
},
|
793
|
+
value: value,
|
794
|
+
name: name,
|
555
795
|
ref: function ref(c) {
|
556
|
-
return
|
796
|
+
return inputs.current[item.fieldName] = c;
|
557
797
|
},
|
558
|
-
|
559
|
-
|
560
|
-
key: "form_".concat(item.id),
|
561
|
-
data: item,
|
562
|
-
defaultValue: _this8._getDefaultValue(item),
|
563
|
-
hideRequiredAlert: _this8.props.hideRequiredAlert || item.hideRequiredAlert
|
798
|
+
isInvalid: invalid,
|
799
|
+
item: item
|
564
800
|
});
|
565
|
-
|
801
|
+
}
|
802
|
+
});
|
803
|
+
case 'FileUpload':
|
804
|
+
return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
|
805
|
+
key: "form_".concat(item.id),
|
806
|
+
control: methods.control,
|
807
|
+
name: item.fieldName,
|
808
|
+
rules: item.fieldRules,
|
809
|
+
defaultValue: _getDefaultValue(item),
|
810
|
+
disabled: item.disabled,
|
811
|
+
required: item.required,
|
812
|
+
render: function render(_ref8) {
|
813
|
+
var _ref8$field = _ref8.field,
|
814
|
+
_onChange6 = _ref8$field.onChange,
|
815
|
+
onBlur = _ref8$field.onBlur,
|
816
|
+
value = _ref8$field.value,
|
817
|
+
name = _ref8$field.name,
|
818
|
+
ref = _ref8$field.ref,
|
819
|
+
_ref8$fieldState = _ref8.fieldState,
|
820
|
+
invalid = _ref8$fieldState.invalid,
|
821
|
+
isTouched = _ref8$fieldState.isTouched,
|
822
|
+
isDirty = _ref8$fieldState.isDirty,
|
823
|
+
error = _ref8$fieldState.error,
|
824
|
+
formState = _ref8.formState;
|
566
825
|
return /*#__PURE__*/_react["default"].createElement(FileUpload, {
|
826
|
+
onBlur: onBlur,
|
827
|
+
onChange: function onChange(e) {
|
828
|
+
_onChange6(e);
|
829
|
+
handleChange(e);
|
830
|
+
},
|
831
|
+
value: value,
|
832
|
+
name: name,
|
567
833
|
ref: function ref(c) {
|
568
|
-
return
|
834
|
+
return inputs.current[item.fieldName] = c;
|
569
835
|
},
|
570
|
-
|
571
|
-
|
572
|
-
key: "form_".concat(item.id),
|
573
|
-
data: item,
|
574
|
-
hideRequiredAlert: _this8.props.hideRequiredAlert || item.hideRequiredAlert,
|
575
|
-
defaultValue: _this8._getDefaultValue(item)
|
836
|
+
isInvalid: invalid,
|
837
|
+
item: item
|
576
838
|
});
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
var formTokenStyle = {
|
582
|
-
display: 'none'
|
583
|
-
};
|
584
|
-
var formProps = {};
|
585
|
-
if (this.props.formId) {
|
586
|
-
formProps.id = this.props.formId;
|
587
|
-
}
|
588
|
-
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_surveyValidator["default"], {
|
589
|
-
emitter: this.emitter
|
590
|
-
}), /*#__PURE__*/_react["default"].createElement("div", {
|
591
|
-
className: "react-survey-builder-form"
|
592
|
-
}, /*#__PURE__*/_react["default"].createElement("form", (0, _extends2["default"])({
|
593
|
-
encType: "multipart/form-data",
|
594
|
-
ref: function ref(c) {
|
595
|
-
return _this8.form = c;
|
596
|
-
},
|
597
|
-
action: this.props.formAction,
|
598
|
-
onBlur: this.handleBlur,
|
599
|
-
onChange: this.handleChange,
|
600
|
-
onSubmit: this.handleSubmit,
|
601
|
-
method: this.props.formMethod
|
602
|
-
}, formProps), this.props.authenticity_token && /*#__PURE__*/_react["default"].createElement("div", {
|
603
|
-
style: formTokenStyle
|
604
|
-
}, /*#__PURE__*/_react["default"].createElement("input", {
|
605
|
-
name: "utf8",
|
606
|
-
type: "hidden",
|
607
|
-
value: "\u2713"
|
608
|
-
}), /*#__PURE__*/_react["default"].createElement("input", {
|
609
|
-
name: "authenticity_token",
|
610
|
-
type: "hidden",
|
611
|
-
value: this.props.authenticity_token
|
612
|
-
}), /*#__PURE__*/_react["default"].createElement("input", {
|
613
|
-
name: "task_id",
|
614
|
-
type: "hidden",
|
615
|
-
value: this.props.task_id
|
616
|
-
})), items, /*#__PURE__*/_react["default"].createElement("div", {
|
617
|
-
className: this.props.buttonClassName ? this.props.buttonClassName : 'btn-toolbar'
|
618
|
-
}, !this.props.hideActions && this.handleRenderSubmit(), !this.props.hideActions && this.props.backAction && this.handleRenderBack()))));
|
839
|
+
}
|
840
|
+
});
|
841
|
+
default:
|
842
|
+
return getSimpleElement(item);
|
619
843
|
}
|
620
|
-
}
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
844
|
+
});
|
845
|
+
var formProps = {};
|
846
|
+
if (formId) {
|
847
|
+
formProps.id = formId;
|
848
|
+
}
|
849
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
850
|
+
className: "react-survey-builder-form"
|
851
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactHookForm.FormProvider, methods, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form, (0, _extends2["default"])({
|
852
|
+
onSubmit: methods.handleSubmit(handleSubmit)
|
853
|
+
}, formProps), fieldItems, /*#__PURE__*/_react["default"].createElement("div", {
|
854
|
+
className: buttonClassName ? buttonClassName : 'btn-toolbar'
|
855
|
+
}, !hideActions && handleRenderSubmit(), !hideActions && backAction && handleRenderBack())))));
|
856
|
+
};
|
857
|
+
var _default = exports["default"] = (0, _reactIntl.injectIntl)(ReactSurvey);
|