react-survey-builder 1.0.9 → 1.0.10
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 +8 -5
- package/dist/967.index.js +1 -1
- package/dist/app.css +1 -1
- package/dist/app.css.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.LICENSE.txt +23 -0
- package/lib/form-fields.js +853 -0
- package/lib/form.js +35 -16
- package/lib/index.js +32 -3
- package/lib/language-provider/locales/en-us.json +2 -1
- package/lib/preview.js +1 -3
- package/lib/survey-elements/component-error-message.js +64 -0
- package/lib/survey-elements/index.js +709 -234
- package/lib/toolbar.js +138 -133
- package/package.json +12 -4
- package/types/index.d.ts +2 -0
package/lib/form.js
CHANGED
@@ -49,6 +49,10 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
49
49
|
var actionName = name || 'Submit';
|
50
50
|
var _this$props$submitBut = _this.props.submitButton,
|
51
51
|
submitButton = _this$props$submitBut === void 0 ? false : _this$props$submitBut;
|
52
|
+
var buttonProps = {};
|
53
|
+
if (_this.props.formId) {
|
54
|
+
buttonProps.form = _this.props.formId;
|
55
|
+
}
|
52
56
|
return submitButton || /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Button, {
|
53
57
|
variant: "primary",
|
54
58
|
type: "submit"
|
@@ -61,7 +65,7 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
61
65
|
backButton = _this$props$backButto === void 0 ? false : _this$props$backButto;
|
62
66
|
return backButton || /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Button, {
|
63
67
|
variant: "secondary",
|
64
|
-
|
68
|
+
onClick: _this.props.backAction,
|
65
69
|
className: "btn-cancel"
|
66
70
|
}, backName);
|
67
71
|
});
|
@@ -82,9 +86,13 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
82
86
|
var result = {};
|
83
87
|
answers.forEach(function (x) {
|
84
88
|
if (x.name.indexOf('tags_') > -1) {
|
85
|
-
|
86
|
-
|
87
|
-
|
89
|
+
if (Array.isArray(x.value)) {
|
90
|
+
result[x.name] = x.value.map(function (y) {
|
91
|
+
return y.value;
|
92
|
+
}).join(',');
|
93
|
+
} else {
|
94
|
+
result[x.name] = x.value;
|
95
|
+
}
|
88
96
|
} else {
|
89
97
|
result[x.name] = x.value;
|
90
98
|
}
|
@@ -124,9 +132,9 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
124
132
|
if (item.element === 'Rating') {
|
125
133
|
$item.value = ref.inputField.current.state.rating;
|
126
134
|
} else if (item.element === 'Tags') {
|
127
|
-
$item.value = ref.inputField.current.state.value;
|
128
|
-
} else if (item.element === 'DatePicker') {
|
129
135
|
$item.value = ref.state.value;
|
136
|
+
// } else if (item.element === 'DatePicker') {
|
137
|
+
// $item.value = ref.state.value;
|
130
138
|
} else if (item.element === 'Camera') {
|
131
139
|
$item.value = ref.state.img;
|
132
140
|
} else if (item.element === 'FileUpload') {
|
@@ -208,15 +216,22 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
208
216
|
};
|
209
217
|
if (!itemData.name) return null;
|
210
218
|
var ref = this.inputs[item.fieldName];
|
211
|
-
if (item.element === 'Checkboxes'
|
212
|
-
var
|
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') {
|
213
229
|
item.options.forEach(function (option) {
|
214
230
|
var $option = _reactDom["default"].findDOMNode(ref.options["child_ref_".concat(option.key)]);
|
215
231
|
if ($option.checked) {
|
216
|
-
|
232
|
+
itemData.value = option.value;
|
217
233
|
}
|
218
234
|
});
|
219
|
-
itemData.value = checked_options;
|
220
235
|
} else if (item.element === 'Checkbox') {
|
221
236
|
if (!ref || !ref.inputField || !ref.inputField.current) {
|
222
237
|
itemData.value = false;
|
@@ -452,18 +467,18 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
452
467
|
key: "render",
|
453
468
|
value: function render() {
|
454
469
|
var _this8 = this;
|
455
|
-
var
|
470
|
+
var dataItems = this.props.data;
|
456
471
|
if (this.props.displayShort) {
|
457
|
-
|
472
|
+
dataItems = this.props.data.filter(function (i) {
|
458
473
|
return i.alternateForm === true;
|
459
474
|
});
|
460
475
|
}
|
461
|
-
|
476
|
+
dataItems.forEach(function (item) {
|
462
477
|
if (item && item.readOnly && item.variableKey && _this8.props.variables[item.variableKey]) {
|
463
478
|
_this8.answerData[item.fieldName] = _this8.props.variables[item.variableKey];
|
464
479
|
}
|
465
480
|
});
|
466
|
-
var items =
|
481
|
+
var items = dataItems.filter(function (x) {
|
467
482
|
return !x.parentId;
|
468
483
|
}).map(function (item) {
|
469
484
|
if (!item) return null;
|
@@ -566,11 +581,15 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
566
581
|
var formTokenStyle = {
|
567
582
|
display: 'none'
|
568
583
|
};
|
584
|
+
var formProps = {};
|
585
|
+
if (this.props.formId) {
|
586
|
+
formProps.id = this.props.formId;
|
587
|
+
}
|
569
588
|
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_surveyValidator["default"], {
|
570
589
|
emitter: this.emitter
|
571
590
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
572
591
|
className: "react-survey-builder-form"
|
573
|
-
}, /*#__PURE__*/_react["default"].createElement("form", {
|
592
|
+
}, /*#__PURE__*/_react["default"].createElement("form", (0, _extends2["default"])({
|
574
593
|
encType: "multipart/form-data",
|
575
594
|
ref: function ref(c) {
|
576
595
|
return _this8.form = c;
|
@@ -580,7 +599,7 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
|
|
580
599
|
onChange: this.handleChange,
|
581
600
|
onSubmit: this.handleSubmit,
|
582
601
|
method: this.props.formMethod
|
583
|
-
}, this.props.authenticity_token && /*#__PURE__*/_react["default"].createElement("div", {
|
602
|
+
}, formProps), this.props.authenticity_token && /*#__PURE__*/_react["default"].createElement("div", {
|
584
603
|
style: formTokenStyle
|
585
604
|
}, /*#__PURE__*/_react["default"].createElement("input", {
|
586
605
|
name: "utf8",
|
package/lib/index.js
CHANGED
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "ElementStore", {
|
|
11
11
|
}
|
12
12
|
});
|
13
13
|
exports.ReactSurveyBuilder = void 0;
|
14
|
+
exports.ReactSurveyFieldGenerator = ReactSurveyFieldGenerator;
|
14
15
|
exports.ReactSurveyGenerator = ReactSurveyGenerator;
|
15
16
|
Object.defineProperty(exports, "Registry", {
|
16
17
|
enumerable: true,
|
@@ -33,6 +34,7 @@ var _reactIntl = require("react-intl");
|
|
33
34
|
var _preview = _interopRequireDefault(require("./preview"));
|
34
35
|
var _toolbar = _interopRequireDefault(require("./toolbar"));
|
35
36
|
var _form = _interopRequireDefault(require("./form"));
|
37
|
+
var _formFields = _interopRequireDefault(require("./form-fields"));
|
36
38
|
var _store = _interopRequireDefault(require("./stores/store"));
|
37
39
|
var _registry = _interopRequireDefault(require("./stores/registry"));
|
38
40
|
var _languageProvider = _interopRequireDefault(require("./language-provider"));
|
@@ -82,9 +84,16 @@ var ReactSurveyBuilder = exports.ReactSurveyBuilder = /*#__PURE__*/function (_Re
|
|
82
84
|
});
|
83
85
|
}
|
84
86
|
}
|
87
|
+
}, {
|
88
|
+
key: "saveFormData",
|
89
|
+
value: function saveFormData() {
|
90
|
+
_store["default"].dispatch('post');
|
91
|
+
}
|
85
92
|
}, {
|
86
93
|
key: "render",
|
87
94
|
value: function render() {
|
95
|
+
var _this$props$formName,
|
96
|
+
_this2 = this;
|
88
97
|
var toolbarProps = {
|
89
98
|
showDescription: this.props.showDescription
|
90
99
|
};
|
@@ -101,7 +110,9 @@ var ReactSurveyBuilder = exports.ReactSurveyBuilder = /*#__PURE__*/function (_Re
|
|
101
110
|
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Container, {
|
102
111
|
fluid: true,
|
103
112
|
className: "react-survey-builder"
|
104
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Row, null, /*#__PURE__*/_react["default"].createElement(
|
113
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Row, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Col, {
|
114
|
+
md: 9
|
115
|
+
}, /*#__PURE__*/_react["default"].createElement(_preview["default"], {
|
105
116
|
files: this.props.files,
|
106
117
|
manualEditModeOff: this.manualEditModeOff.bind(this),
|
107
118
|
showCorrectColumn: this.props.showCorrectColumn,
|
@@ -118,9 +129,18 @@ var ReactSurveyBuilder = exports.ReactSurveyBuilder = /*#__PURE__*/function (_Re
|
|
118
129
|
editElement: this.state.editElement,
|
119
130
|
renderEditForm: this.props.renderEditForm,
|
120
131
|
saveAlways: this.props.saveAlways
|
121
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
132
|
+
})), /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Col, {
|
133
|
+
md: 3
|
134
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
135
|
+
className: "border border-light border-3 p-3 d-grid gap-1 mb-3"
|
136
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h4", null, (_this$props$formName = this.props.formName) !== null && _this$props$formName !== void 0 ? _this$props$formName : 'Preview')), /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Button, {
|
137
|
+
variant: "primary",
|
138
|
+
onClick: function onClick() {
|
139
|
+
_this2.saveFormData();
|
140
|
+
}
|
141
|
+
}, "Save Survey")), /*#__PURE__*/_react["default"].createElement(_toolbar["default"], (0, _extends2["default"])({}, toolbarProps, {
|
122
142
|
customItems: this.props.customToolbarItems
|
123
|
-
})))))));
|
143
|
+
}))))))));
|
124
144
|
}
|
125
145
|
}]);
|
126
146
|
return ReactSurveyBuilder;
|
@@ -133,9 +153,18 @@ function ReactSurveyGenerator(props) {
|
|
133
153
|
messages: currentAppLocale.messages
|
134
154
|
}, /*#__PURE__*/_react["default"].createElement(_form["default"], props));
|
135
155
|
}
|
156
|
+
function ReactSurveyFieldGenerator(props) {
|
157
|
+
var language = props.locale ? props.locale : 'en';
|
158
|
+
var currentAppLocale = _languageProvider["default"][language];
|
159
|
+
return /*#__PURE__*/_react["default"].createElement(_reactIntl.IntlProvider, {
|
160
|
+
locale: currentAppLocale.locale,
|
161
|
+
messages: currentAppLocale.messages
|
162
|
+
}, /*#__PURE__*/_react["default"].createElement(_formFields["default"], props));
|
163
|
+
}
|
136
164
|
var SurveyBuilders = {};
|
137
165
|
SurveyBuilders.ReactSurveyBuilder = ReactSurveyBuilder;
|
138
166
|
SurveyBuilders.ReactSurveyGenerator = ReactSurveyGenerator;
|
167
|
+
SurveyBuilders.ReactSurveyFieldGenerator = ReactSurveyFieldGenerator;
|
139
168
|
SurveyBuilders.ElementStore = _store["default"];
|
140
169
|
SurveyBuilders.Registry = _registry["default"];
|
141
170
|
var _default = exports["default"] = SurveyBuilders;
|
@@ -97,5 +97,6 @@
|
|
97
97
|
"message.was-answered-incorrectly": "was answered incorrectly",
|
98
98
|
"message.was-not-registered": "was not registered",
|
99
99
|
"message.invalid-email": "field requires valid email address",
|
100
|
-
"message.invalid-phone-number": "field requires a valid phone number"
|
100
|
+
"message.invalid-phone-number": "field requires a valid phone number",
|
101
|
+
"message.invalid-date": "field requires a valid date in the format MM/DD/YYYY"
|
101
102
|
}
|
package/lib/preview.js
CHANGED
@@ -19,7 +19,6 @@ var _store = _interopRequireDefault(require("./stores/store"));
|
|
19
19
|
var _surveyDynamicEdit = _interopRequireDefault(require("./survey-dynamic-edit"));
|
20
20
|
var _sortableFormElements = _interopRequireDefault(require("./sortable-form-elements"));
|
21
21
|
var _componentDragLayer = _interopRequireDefault(require("./survey-elements/component-drag-layer"));
|
22
|
-
var _reactBootstrap = require("react-bootstrap");
|
23
22
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
24
23
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /**
|
25
24
|
* <Preview />
|
@@ -359,8 +358,7 @@ var Preview = exports["default"] = /*#__PURE__*/function (_React$Component) {
|
|
359
358
|
var items = data.map(function (item, index) {
|
360
359
|
return _this6.getElement(item, index);
|
361
360
|
});
|
362
|
-
return /*#__PURE__*/_react["default"].createElement(
|
363
|
-
md: 9,
|
361
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
364
362
|
className: classes
|
365
363
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
366
364
|
className: "edit-form",
|
@@ -0,0 +1,64 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.getError = exports["default"] = void 0;
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
10
|
+
var _reactHookForm = require("react-hook-form");
|
11
|
+
var _errorMessage = require("@hookform/error-message");
|
12
|
+
var _reactBootstrap = require("react-bootstrap");
|
13
|
+
var getError = exports.getError = function getError(errors, name) {
|
14
|
+
if (name !== undefined && errors !== undefined) {
|
15
|
+
var obj = errors;
|
16
|
+
name = name.split('.');
|
17
|
+
var len = name.length;
|
18
|
+
for (var i = 0; i < len - 1; i++) {
|
19
|
+
if (obj[name[i]] !== undefined) {
|
20
|
+
//console.log(obj[name[i]]);
|
21
|
+
obj = obj[name[i]];
|
22
|
+
}
|
23
|
+
}
|
24
|
+
return obj[name[len - 1]];
|
25
|
+
} else {
|
26
|
+
return undefined;
|
27
|
+
}
|
28
|
+
};
|
29
|
+
var ComponentErrorMessage = function ComponentErrorMessage(_ref) {
|
30
|
+
var name = _ref.name;
|
31
|
+
var methods = (0, _reactHookForm.useFormContext)();
|
32
|
+
if (getError(methods.formState.errors, name) !== undefined) {
|
33
|
+
return /*#__PURE__*/_react["default"].createElement(_errorMessage.ErrorMessage, {
|
34
|
+
errors: methods.formState.errors,
|
35
|
+
name: name,
|
36
|
+
render: function render(_ref2) {
|
37
|
+
var message = _ref2.message,
|
38
|
+
messages = _ref2.messages;
|
39
|
+
if (messages !== undefined && messages !== null) {
|
40
|
+
return Object.entries(messages).map(function (_ref3) {
|
41
|
+
var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
|
42
|
+
type = _ref4[0],
|
43
|
+
message = _ref4[1];
|
44
|
+
return /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Alert, {
|
45
|
+
key: "".concat(name, "-").concat(type),
|
46
|
+
variant: "danger",
|
47
|
+
className: "form-error"
|
48
|
+
}, message);
|
49
|
+
});
|
50
|
+
} else if (message !== undefined && message !== null && message !== '') {
|
51
|
+
return /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Alert, {
|
52
|
+
variant: "danger",
|
53
|
+
className: "form-error"
|
54
|
+
}, message);
|
55
|
+
} else {
|
56
|
+
return null;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
});
|
60
|
+
} else {
|
61
|
+
return null;
|
62
|
+
}
|
63
|
+
};
|
64
|
+
var _default = exports["default"] = ComponentErrorMessage;
|