react-survey-builder 1.0.71 → 1.0.73
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 +2 -0
- package/dist/app.css +1 -1
- package/dist/app.css.map +1 -1
- package/dist/bundle.js +628 -35
- package/dist/src_survey-elements-edit_jsx.bundle.js +2 -2
- package/lib/dynamic-option-list.js +140 -155
- package/lib/fieldset/FieldSet.js +118 -0
- package/lib/fieldset/index.js +2 -132
- package/lib/form-fields.js +45 -16
- package/lib/form-steps.js +793 -0
- package/lib/form.js +47 -17
- package/lib/index.js +130 -124
- package/lib/multi-column/MultiColumnRow.js +69 -81
- package/lib/multi-column/dustbin.js +52 -18
- package/lib/preview.js +378 -349
- package/lib/sortable-element.js +9 -0
- package/lib/sortable-form-elements.js +28 -2
- package/lib/step/Step.js +147 -0
- package/lib/step/index.js +2 -0
- package/lib/survey-elements/component-drag-layer.js +13 -8
- package/lib/survey-elements/component-error-message.js +1 -1
- package/lib/survey-elements/component-header.js +12 -11
- package/lib/survey-elements/custom-element.js +51 -62
- package/lib/survey-elements/header-bar.js +36 -55
- package/lib/survey-elements/index.js +372 -370
- package/lib/survey-elements/star-rating.js +232 -282
- package/lib/survey-elements-edit.js +659 -564
- package/lib/survey-place-holder.js +9 -33
- package/lib/survey-validator.js +45 -75
- package/lib/toolbar-draggable-item.js +10 -34
- package/lib/toolbar-group-item.js +1 -1
- package/lib/toolbar.js +578 -558
- package/lib/utils/objectUtils.js +139 -0
- package/package.json +6 -5
- package/types/index.d.ts +5 -0
package/lib/form-fields.js
CHANGED
@@ -2,23 +2,28 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
2
2
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
3
3
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
4
4
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
5
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
6
5
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
7
6
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
8
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
9
7
|
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; }
|
10
8
|
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) { _defineProperty(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; }
|
11
9
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
12
10
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
13
11
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
12
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
13
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
14
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
15
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
16
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
17
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
14
18
|
import React from 'react';
|
15
19
|
import ReactDOM from 'react-dom';
|
16
20
|
import SurveyElements, { Image, Checkboxes, Signature, Download, Camera, FileUpload, PhoneNumber, DatePicker, TextInput, EmailInput, NumberInput, TextArea, Dropdown, Tags } from './survey-elements';
|
17
21
|
import { TwoColumnRow, ThreeColumnRow, MultiColumnRow } from './multi-column';
|
18
|
-
import FieldSet from './fieldset';
|
22
|
+
import { FieldSet } from './fieldset';
|
23
|
+
import { Step } from './step';
|
19
24
|
import CustomElement from './survey-elements/custom-element';
|
20
25
|
import Registry from './stores/registry';
|
21
|
-
import { Button, Form } from 'react-bootstrap
|
26
|
+
import { Button, Form } from 'react-bootstrap';
|
22
27
|
import { Controller, FormProvider } from "react-hook-form";
|
23
28
|
var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
24
29
|
var _ref$validateForCorre = _ref.validateForCorrectness,
|
@@ -45,6 +50,8 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
45
50
|
variables = _ref.variables,
|
46
51
|
buttonClassName = _ref.buttonClassName,
|
47
52
|
checkboxButtonClassName = _ref.checkboxButtonClassName,
|
53
|
+
headerClassName = _ref.headerClassName,
|
54
|
+
labelClassName = _ref.labelClassName,
|
48
55
|
formId = _ref.formId,
|
49
56
|
methods = _ref.methods,
|
50
57
|
_ref$print = _ref.print,
|
@@ -64,6 +71,10 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
64
71
|
var form = React.useRef();
|
65
72
|
var inputs = React.useRef({});
|
66
73
|
var answerData = React.useRef(_convert(answers));
|
74
|
+
var _React$useState = React.useState(null),
|
75
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
76
|
+
formAnswers = _React$useState2[0],
|
77
|
+
setFormAnswers = _React$useState2[1];
|
67
78
|
var _getDefaultValue = function _getDefaultValue($dataItem) {
|
68
79
|
var defaultValue = answerData.current[$dataItem.fieldName];
|
69
80
|
if ($dataItem.element === 'DatePicker') {
|
@@ -178,7 +189,9 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
178
189
|
};
|
179
190
|
var _collectFormData = function _collectFormData($dataItems, $formData) {
|
180
191
|
var formData = [];
|
181
|
-
$dataItems.
|
192
|
+
$dataItems.filter(function (i) {
|
193
|
+
return i["static"] !== true;
|
194
|
+
}).forEach(function (item) {
|
182
195
|
var itemData = {
|
183
196
|
id: item.id,
|
184
197
|
name: item.fieldName,
|
@@ -212,6 +225,7 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
212
225
|
formData: $formData,
|
213
226
|
answers: $data
|
214
227
|
});
|
228
|
+
setFormAnswers($data);
|
215
229
|
} else {
|
216
230
|
var $form = ReactDOM.findDOMNode(form.current);
|
217
231
|
$form.submit();
|
@@ -219,12 +233,14 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
219
233
|
}
|
220
234
|
};
|
221
235
|
var handleChange = function handleChange(event) {
|
222
|
-
// console.log('handleChange');
|
223
236
|
// Call submit function on change
|
237
|
+
var $data = _collectFormData(items, (methods === null || methods === void 0 ? void 0 : methods.getValues()) || []);
|
238
|
+
// console.log('handleChange', $data);
|
239
|
+
|
224
240
|
if (onChange) {
|
225
|
-
var $data = _collectFormData(items, (methods === null || methods === void 0 ? void 0 : methods.getValues()) || []);
|
226
241
|
onChange($data);
|
227
242
|
}
|
243
|
+
setFormAnswers($data);
|
228
244
|
};
|
229
245
|
var validateForm = function validateForm() {
|
230
246
|
var hasErrors = false;
|
@@ -252,14 +268,18 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
252
268
|
return x.id === id;
|
253
269
|
});
|
254
270
|
if ($dataItem !== undefined) {
|
255
|
-
var _ref2, _ref3, _ref4;
|
271
|
+
var _ref2, _ref3, _ref4, _$dataItem$fieldName;
|
256
272
|
return _objectSpread(_objectSpread({}, $dataItem), {}, {
|
257
273
|
fieldRules: getFieldRules($dataItem),
|
258
274
|
print: print !== null && print !== void 0 ? print : false,
|
259
275
|
readOnly: (_ref2 = readOnly || $dataItem.readOnly) !== null && _ref2 !== void 0 ? _ref2 : false,
|
260
276
|
hideLabel: (_ref3 = hideLabels || $dataItem.hideLabel) !== null && _ref3 !== void 0 ? _ref3 : false,
|
261
277
|
disabled: (_ref4 = readOnly || $dataItem.readOnly) !== null && _ref4 !== void 0 ? _ref4 : false,
|
262
|
-
mutable: true
|
278
|
+
mutable: true,
|
279
|
+
name: (_$dataItem$fieldName = $dataItem.fieldName) !== null && _$dataItem$fieldName !== void 0 ? _$dataItem$fieldName : $dataItem.name,
|
280
|
+
key: "form_".concat($dataItem.id),
|
281
|
+
item: $dataItem,
|
282
|
+
value: _getDefaultValue($dataItem)
|
263
283
|
});
|
264
284
|
}
|
265
285
|
return null;
|
@@ -274,7 +294,8 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
274
294
|
name: item.fieldName,
|
275
295
|
key: "form_".concat(item.id),
|
276
296
|
item: item,
|
277
|
-
value: _getDefaultValue(item)
|
297
|
+
value: _getDefaultValue(item),
|
298
|
+
onChange: handleChange
|
278
299
|
});
|
279
300
|
};
|
280
301
|
var getInputElement = function getInputElement(item) {
|
@@ -317,20 +338,23 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
317
338
|
},
|
318
339
|
isInvalid: invalid,
|
319
340
|
item: item,
|
320
|
-
className: item.element === 'RadioButtons' || item.element === 'Checkbox' ? checkboxButtonClassName !== null && checkboxButtonClassName !== void 0 ? checkboxButtonClassName : null : null
|
341
|
+
className: item.element === 'RadioButtons' || item.element === 'Checkbox' ? checkboxButtonClassName !== null && checkboxButtonClassName !== void 0 ? checkboxButtonClassName : null : null,
|
342
|
+
checkboxButtonClassName: item.element === 'RadioButtons' || item.element === 'Checkbox' ? checkboxButtonClassName !== null && checkboxButtonClassName !== void 0 ? checkboxButtonClassName : null : null
|
321
343
|
});
|
322
344
|
}
|
323
345
|
});
|
324
346
|
};
|
325
347
|
var getContainerElement = function getContainerElement(item, Element) {
|
326
|
-
var controls = item.childItems.map(function (childItem) {
|
348
|
+
var controls = item === null || item === void 0 ? void 0 : item.childItems.map(function (childItem) {
|
327
349
|
return childItem ? getInputElement(getDataItemById(childItem)) : /*#__PURE__*/React.createElement("div", null, "\xA0");
|
328
350
|
});
|
329
351
|
return /*#__PURE__*/React.createElement(Element, {
|
330
352
|
mutable: true,
|
331
353
|
key: "form_".concat(item.id),
|
332
354
|
item: item,
|
333
|
-
controls: controls
|
355
|
+
controls: controls,
|
356
|
+
items: items,
|
357
|
+
answers: formAnswers
|
334
358
|
});
|
335
359
|
};
|
336
360
|
var getSimpleElement = function getSimpleElement(item) {
|
@@ -338,7 +362,9 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
338
362
|
return /*#__PURE__*/React.createElement(Element, {
|
339
363
|
mutable: true,
|
340
364
|
key: "form_".concat(item.id),
|
341
|
-
item: item
|
365
|
+
item: item,
|
366
|
+
headerClassName: headerClassName,
|
367
|
+
labelClassName: labelClassName
|
342
368
|
});
|
343
369
|
};
|
344
370
|
var getCustomElement = function getCustomElement(item) {
|
@@ -442,10 +468,10 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
442
468
|
item.mutable = true;
|
443
469
|
switch (item.element) {
|
444
470
|
case 'RadioButtons':
|
445
|
-
case 'Rating':
|
446
471
|
case 'Range':
|
447
472
|
case 'Checkbox':
|
448
473
|
return getInputElement(item);
|
474
|
+
case 'Rating':
|
449
475
|
case 'Tags':
|
450
476
|
case 'Dropdown':
|
451
477
|
case 'TextInput':
|
@@ -463,6 +489,8 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
463
489
|
return getContainerElement(item, ThreeColumnRow);
|
464
490
|
case 'TwoColumnRow':
|
465
491
|
return getContainerElement(item, TwoColumnRow);
|
492
|
+
case 'Step':
|
493
|
+
return getContainerElement(item, Step);
|
466
494
|
case 'FieldSet':
|
467
495
|
return getContainerElement(item, FieldSet);
|
468
496
|
case 'Signature':
|
@@ -538,7 +566,8 @@ var ReactSurveyFormFields = function ReactSurveyFormFields(_ref) {
|
|
538
566
|
},
|
539
567
|
isInvalid: invalid,
|
540
568
|
item: item,
|
541
|
-
className: checkboxButtonClassName !== null && checkboxButtonClassName !== void 0 ? checkboxButtonClassName : null
|
569
|
+
className: checkboxButtonClassName !== null && checkboxButtonClassName !== void 0 ? checkboxButtonClassName : null,
|
570
|
+
checkboxButtonClassName: checkboxButtonClassName !== null && checkboxButtonClassName !== void 0 ? checkboxButtonClassName : null
|
542
571
|
});
|
543
572
|
}
|
544
573
|
});
|