react-survey-builder 1.0.8 → 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/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,8 +65,8 @@ 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
- href: _this.props.backAction,
65
- className: "btn-cancel me-2"
68
+ onClick: _this.props.backAction,
69
+ className: "btn-cancel"
66
70
  }, backName);
67
71
  });
68
72
  _this.answerData = _this._convert(props.answerData);
@@ -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
- result[x.name] = x.value.map(function (y) {
86
- return y.value;
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' || item.element === 'RadioButtons') {
212
- var checked_options = [];
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
- checked_options.push(option.key);
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 data_items = this.props.data;
470
+ var dataItems = this.props.data;
456
471
  if (this.props.displayShort) {
457
- data_items = this.props.data.filter(function (i) {
472
+ dataItems = this.props.data.filter(function (i) {
458
473
  return i.alternateForm === true;
459
474
  });
460
475
  }
461
- data_items.forEach(function (item) {
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 = data_items.filter(function (x) {
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",
@@ -595,8 +614,8 @@ var ReactSurvey = /*#__PURE__*/function (_React$Component) {
595
614
  type: "hidden",
596
615
  value: this.props.task_id
597
616
  })), items, /*#__PURE__*/_react["default"].createElement("div", {
598
- className: "btn-toolbar"
599
- }, !this.props.hideActions && this.props.backAction && this.handleRenderBack(), !this.props.hideActions && this.handleRenderSubmit()))));
617
+ className: this.props.buttonClassName ? this.props.buttonClassName : 'btn-toolbar'
618
+ }, !this.props.hideActions && this.handleRenderSubmit(), !this.props.hideActions && this.props.backAction && this.handleRenderBack()))));
600
619
  }
601
620
  }]);
602
621
  return ReactSurvey;
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(_preview["default"], {
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(_toolbar["default"], (0, _extends2["default"])({}, toolbarProps, {
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;
@@ -6,27 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports["default"] = exports.AppLanguages = void 0;
8
8
  var _enUs = _interopRequireDefault(require("./entries/en-us"));
9
- var _itIt = _interopRequireDefault(require("./entries/it-it"));
10
- var _viVn = _interopRequireDefault(require("./entries/vi-vn"));
11
9
  var AppLanguages = exports.AppLanguages = [{
12
- languageId: 'vietnamese',
13
- locale: 'vi',
14
- name: 'Vietnamese',
15
- icon: 'vn'
16
- }, {
17
10
  languageId: 'english',
18
11
  locale: 'en',
19
12
  name: 'English',
20
13
  icon: 'us'
21
- }, {
22
- languageId: 'italian',
23
- locale: 'it',
24
- name: 'Italiano',
25
- icon: 'it'
26
14
  }];
27
15
  var AppLocale = {
28
- en: _enUs["default"],
29
- vi: _viVn["default"],
30
- it: _itIt["default"]
16
+ en: _enUs["default"]
31
17
  };
32
18
  var _default = exports["default"] = AppLocale;
@@ -2,6 +2,7 @@
2
2
  "display-label": "Display Label",
3
3
  "choose-file": "Choose file",
4
4
  "choose-file-type": "Choose file type",
5
+ "choose-label-location": "Choose Label Location",
5
6
  "select-file-type": "Select file type",
6
7
  "text-to-display": "Text to display",
7
8
  "link-to": "Link to",
@@ -96,5 +97,6 @@
96
97
  "message.was-answered-incorrectly": "was answered incorrectly",
97
98
  "message.was-not-registered": "was not registered",
98
99
  "message.invalid-email": "field requires valid email address",
99
- "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"
100
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(_reactBootstrap.Col, {
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;