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.
@@ -72,10 +72,10 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
72
72
  value: function onEditorStateChange(index, property, editorContent) {
73
73
  // const html = draftToHtml(convertToRaw(editorContent.getCurrentContent())).replace(/<p>/g, '<div>').replace(/<\/p>/g, '</div>');
74
74
  var html = (0, _draftjsToHtml["default"])((0, _draftJs.convertToRaw)(editorContent.getCurrentContent())).replace(/<p>/g, '').replace(/<\/p>/g, '').replace(/&nbsp;/g, ' ').replace(/(?:\r\n|\r|\n)/g, '');
75
- var this_element = this.state.element;
76
- this_element[property] = html;
75
+ var thisElement = this.state.element;
76
+ thisElement[property] = html;
77
77
  this.setState({
78
- element: this_element,
78
+ element: thisElement,
79
79
  dirty: true
80
80
  });
81
81
  }
@@ -130,19 +130,19 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
130
130
  if (this.state.dirty) {
131
131
  this.props.element.dirty = true;
132
132
  }
133
- var this_checked = this.props.element.hasOwnProperty('required') ? this.props.element.required : false;
134
- var this_default_checked = this.props.element.hasOwnProperty('defaultChecked') ? this.props.element.defaultChecked : false;
135
- var this_read_only = this.props.element.hasOwnProperty('readOnly') ? this.props.element.readOnly : false;
136
- var this_default_today = this.props.element.hasOwnProperty('defaultToday') ? this.props.element.defaultToday : false;
137
- var this_show_time_select = this.props.element.hasOwnProperty('showTimeSelect') ? this.props.element.showTimeSelect : false;
138
- var this_show_time_select_only = this.props.element.hasOwnProperty('showTimeSelectOnly') ? this.props.element.showTimeSelectOnly : false;
139
- var this_show_time_input = this.props.element.hasOwnProperty('showTimeInput') ? this.props.element.showTimeInput : false;
140
- var this_checked_inline = this.props.element.hasOwnProperty('inline') ? this.props.element.inline : false;
133
+ var thisChecked = this.props.element.hasOwnProperty('required') ? this.props.element.required : false;
134
+ var thisDefaultChecked = this.props.element.hasOwnProperty('defaultChecked') ? this.props.element.defaultChecked : false;
135
+ var thisReadOnly = this.props.element.hasOwnProperty('readOnly') ? this.props.element.readOnly : false;
136
+ var thisDefaultToday = this.props.element.hasOwnProperty('defaultToday') ? this.props.element.defaultToday : false;
137
+ var thisShowTimeSelect = this.props.element.hasOwnProperty('showTimeSelect') ? this.props.element.showTimeSelect : false;
138
+ var thisShowTimeSelectOnly = this.props.element.hasOwnProperty('showTimeSelectOnly') ? this.props.element.showTimeSelectOnly : false;
139
+ var thisShowTimeInput = this.props.element.hasOwnProperty('showTimeInput') ? this.props.element.showTimeInput : false;
140
+ var thisCheckedInline = this.props.element.hasOwnProperty('inline') ? this.props.element.inline : false;
141
141
  var this_checked_bold = this.props.element.hasOwnProperty('bold') ? this.props.element.bold : false;
142
- var this_checked_italic = this.props.element.hasOwnProperty('italic') ? this.props.element.italic : false;
143
- var this_checked_center = this.props.element.hasOwnProperty('center') ? this.props.element.center : false;
144
- var this_checked_page_break = this.props.element.hasOwnProperty('pageBreakBefore') ? this.props.element.pageBreakBefore : false;
145
- var this_checked_alternate_form = this.props.element.hasOwnProperty('alternateForm') ? this.props.element.alternateForm : false;
142
+ var thisCheckedItalic = this.props.element.hasOwnProperty('italic') ? this.props.element.italic : false;
143
+ var thisCheckedCenter = this.props.element.hasOwnProperty('center') ? this.props.element.center : false;
144
+ var thisCheckedPageBreak = this.props.element.hasOwnProperty('pageBreakBefore') ? this.props.element.pageBreakBefore : false;
145
+ var thisCheckedAlternateForm = this.props.element.hasOwnProperty('alternateForm') ? this.props.element.alternateForm : false;
146
146
  var _this$props$element = this.props.element,
147
147
  canHavePageBreakBefore = _this$props$element.canHavePageBreakBefore,
148
148
  canHaveAlternateForm = _this$props$element.canHaveAlternateForm,
@@ -150,9 +150,9 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
150
150
  canHaveOptionCorrect = _this$props$element.canHaveOptionCorrect,
151
151
  canHaveOptionValue = _this$props$element.canHaveOptionValue;
152
152
  var canHaveImageSize = this.state.element.element === 'Image' || this.state.element.element === 'Camera';
153
- var this_files = this.props.files.length ? this.props.files : [];
154
- if (this_files.length < 1 || this_files.length > 0 && this_files[0].id !== '') {
155
- this_files.unshift({
153
+ var thisFiles = this.props.files.length ? this.props.files : [];
154
+ if (thisFiles.length < 1 || thisFiles.length > 0 && thisFiles[0].id !== '') {
155
+ thisFiles.unshift({
156
156
  id: '',
157
157
  file_name: ''
158
158
  });
@@ -192,11 +192,11 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
192
192
  defaultValue: this.props.element.filePath,
193
193
  onBlur: this.updateElement.bind(this),
194
194
  onChange: this.editElementProp.bind(this, 'filePath', 'value')
195
- }, this_files.map(function (file) {
196
- var this_key = "file_".concat(file.id);
195
+ }, thisFiles.map(function (file) {
196
+ var thisKey = "file_".concat(file.id);
197
197
  return /*#__PURE__*/_react["default"].createElement("option", {
198
198
  value: file.id,
199
- key: this_key
199
+ key: thisKey
200
200
  }, file.file_name);
201
201
  }))), this.props.element.hasOwnProperty('href') && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement(_reactTextareaAutosize["default"], {
202
202
  type: "text",
@@ -218,7 +218,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
218
218
  id: "required"
219
219
  }),
220
220
  type: "checkbox",
221
- checked: this_checked,
221
+ checked: thisChecked,
222
222
  value: true,
223
223
  onChange: this.editElementProp.bind(this, 'required', 'checked')
224
224
  }), this.props.element.hasOwnProperty('readOnly') && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Check, {
@@ -227,7 +227,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
227
227
  id: "read-only"
228
228
  }),
229
229
  type: "checkbox",
230
- checked: this_read_only,
230
+ checked: thisReadOnly,
231
231
  value: true,
232
232
  onChange: this.editElementProp.bind(this, 'readOnly', 'checked')
233
233
  }), this.props.element.hasOwnProperty('defaultToday') && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Check, {
@@ -236,7 +236,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
236
236
  id: "default-to-today"
237
237
  }),
238
238
  type: "checkbox",
239
- checked: this_default_today,
239
+ checked: thisDefaultToday,
240
240
  value: true,
241
241
  onChange: this.editElementProp.bind(this, 'defaultToday', 'checked')
242
242
  }), ['Checkboxes', 'Checkbox'].indexOf(this.state.element.element) !== -1 && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Check, {
@@ -245,7 +245,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
245
245
  id: "default-checked"
246
246
  }),
247
247
  type: "checkbox",
248
- checked: this_default_checked,
248
+ checked: thisDefaultChecked,
249
249
  value: true,
250
250
  onChange: this.editElementProp.bind(this, 'defaultChecked', 'checked')
251
251
  }), (this.state.element.element === 'RadioButtons' || this.state.element.element === 'Checkboxes') && canHaveDisplayHorizontal && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Check, {
@@ -254,7 +254,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
254
254
  id: "display-horizontal"
255
255
  }),
256
256
  type: "checkbox",
257
- checked: this_checked_inline,
257
+ checked: thisCheckedInline,
258
258
  value: true,
259
259
  onChange: this.editElementProp.bind(this, 'inline', 'checked')
260
260
  })), this.state.element.element === 'Checkbox' && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, null, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
@@ -281,7 +281,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
281
281
  id: "center"
282
282
  }),
283
283
  type: "checkbox",
284
- checked: this_checked_center,
284
+ checked: thisCheckedCenter,
285
285
  value: true,
286
286
  onChange: this.editElementProp.bind(this, 'center', 'checked')
287
287
  })), /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Row, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Col, {
@@ -351,7 +351,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
351
351
  id: "page-break-before-element"
352
352
  }),
353
353
  type: "checkbox",
354
- checked: this_checked_page_break,
354
+ checked: thisCheckedPageBreak,
355
355
  value: true,
356
356
  onChange: this.editElementProp.bind(this, 'pageBreakBefore', 'checked')
357
357
  })), canHaveAlternateForm && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, null, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
@@ -362,7 +362,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
362
362
  id: "display-on-alternate-signature-page"
363
363
  }),
364
364
  type: "checkbox",
365
- checked: this_checked_alternate_form,
365
+ checked: thisCheckedAlternateForm,
366
366
  value: true,
367
367
  onChange: this.editElementProp.bind(this, 'alternateForm', 'checked')
368
368
  })), this.props.element.hasOwnProperty('step') && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement("div", {
@@ -452,7 +452,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
452
452
  id: "italic"
453
453
  }),
454
454
  type: "checkbox",
455
- checked: this_checked_italic,
455
+ checked: thisCheckedItalic,
456
456
  value: true,
457
457
  onChange: this.editElementProp.bind(this, 'italic', 'checked')
458
458
  })), this.props.element.showPlaceholder && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
@@ -475,7 +475,20 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
475
475
  defaultValue: this.props.element.customName,
476
476
  onBlur: this.updateElement.bind(this),
477
477
  onChange: this.editElementProp.bind(this, 'customName', 'value')
478
- })), this.props.element.showHelp && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
478
+ })), this.props.element.showLabelLocationPicker && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
479
+ htmlFor: "labelLocation"
480
+ }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
481
+ id: "choose-label-location"
482
+ }), ":"), /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Select, {
483
+ id: "labelLocation",
484
+ defaultValue: this.props.element.labelLocation,
485
+ onBlur: this.updateElement.bind(this),
486
+ onChange: this.editElementProp.bind(this, 'labelLocation', 'value')
487
+ }, /*#__PURE__*/_react["default"].createElement("option", {
488
+ value: "ABOVE"
489
+ }, "Above Form Field"), /*#__PURE__*/_react["default"].createElement("option", {
490
+ value: "FLOATING"
491
+ }, "Floating Inside Form Field"))), this.props.element.showHelp && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
479
492
  htmlFor: "help"
480
493
  }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
481
494
  id: "help-label"
package/lib/toolbar.js CHANGED
@@ -20,7 +20,6 @@ var _UUID = _interopRequireDefault(require("./UUID"));
20
20
  var _store = _interopRequireDefault(require("./stores/store"));
21
21
  var _functions = require("./functions");
22
22
  var _fa = require("react-icons/fa");
23
- var _reactBootstrap = require("react-bootstrap");
24
23
  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); }; }
25
24
  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; } }
26
25
  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; }
@@ -165,7 +164,8 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
165
164
  showHelp: true,
166
165
  options: [],
167
166
  placeholder: 'Select One',
168
- hideRequiredAlert: true
167
+ hideRequiredAlert: true,
168
+ showLabelLocationPicker: true
169
169
  }, {
170
170
  key: 'Tags',
171
171
  canHaveAnswer: true,
@@ -181,7 +181,9 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
181
181
  showDescription: true,
182
182
  showHelp: true,
183
183
  options: [],
184
- hideRequiredAlert: true
184
+ placeholder: 'Select...',
185
+ hideRequiredAlert: true,
186
+ showLabelLocationPicker: true
185
187
  }, {
186
188
  key: 'Checkboxes',
187
189
  canHaveAnswer: true,
@@ -247,7 +249,8 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
247
249
  placeholder: intl.formatMessage({
248
250
  id: 'place-holder-label'
249
251
  }),
250
- hideRequiredAlert: true
252
+ hideRequiredAlert: true,
253
+ showLabelLocationPicker: true
251
254
  }, {
252
255
  key: 'EmailInput',
253
256
  canHaveAnswer: true,
@@ -265,40 +268,46 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
265
268
  placeholder: intl.formatMessage({
266
269
  id: 'place-holder-email'
267
270
  }),
268
- hideRequiredAlert: true
271
+ hideRequiredAlert: true,
272
+ showLabelLocationPicker: true
269
273
  }, {
270
- key: 'NumberInput',
274
+ key: 'PhoneNumber',
271
275
  canHaveAnswer: true,
272
276
  name: intl.formatMessage({
273
- id: 'number-input'
277
+ id: 'phone-input'
274
278
  }),
275
279
  label: intl.formatMessage({
276
- id: 'place-holder-label'
280
+ id: 'place-holder-phone-number'
277
281
  }),
278
- icon: _fa.FaPlus,
279
- fieldName: 'number_input_',
282
+ icon: _fa.FaPhone,
283
+ fieldName: 'phone_input_',
280
284
  showCustomName: true,
281
285
  showDescription: true,
282
286
  showHelp: true,
283
- step: 1,
284
- minValue: 0,
285
- maxValue: 5,
286
- hideRequiredAlert: true
287
+ hideRequiredAlert: true,
288
+ showLabelLocationPicker: true
287
289
  }, {
288
- key: 'PhoneNumber',
289
- canHaveAnswer: true,
290
+ key: 'DatePicker',
291
+ canDefaultToday: true,
292
+ canReadOnly: true,
293
+ dateFormat: 'MM/DD/YYYY',
294
+ timeFormat: 'hh:mm aa',
295
+ showTimeSelect: false,
296
+ showTimeSelectOnly: false,
297
+ showTimeInput: false,
290
298
  name: intl.formatMessage({
291
- id: 'phone-input'
299
+ id: 'date'
292
300
  }),
301
+ icon: _fa.FaRegCalendarAlt,
293
302
  label: intl.formatMessage({
294
- id: 'place-holder-phone-number'
303
+ id: 'place-holder-label'
295
304
  }),
296
- icon: _fa.FaPhone,
297
- fieldName: 'phone_input_',
305
+ fieldName: 'date_picker_',
298
306
  showCustomName: true,
299
307
  showDescription: true,
300
308
  showHelp: true,
301
- hideRequiredAlert: true
309
+ hideRequiredAlert: true,
310
+ showLabelLocationPicker: true
302
311
  }, {
303
312
  key: 'TextArea',
304
313
  canHaveAnswer: true,
@@ -313,81 +322,27 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
313
322
  showCustomName: true,
314
323
  showDescription: true,
315
324
  showHelp: true,
316
- hideRequiredAlert: true
325
+ hideRequiredAlert: true,
326
+ showLabelLocationPicker: true
317
327
  }, {
318
- key: 'FieldSet',
319
- canHaveAnswer: false,
328
+ key: 'NumberInput',
329
+ canHaveAnswer: true,
320
330
  name: intl.formatMessage({
321
- id: 'fieldset'
331
+ id: 'number-input'
322
332
  }),
323
333
  label: intl.formatMessage({
324
- id: 'fieldset'
325
- }),
326
- icon: _fa.FaBars,
327
- fieldName: 'fieldset-element'
328
- }, {
329
- key: 'TwoColumnRow',
330
- canHaveAnswer: false,
331
- name: intl.formatMessage({
332
- id: 'two-columns-row'
333
- }),
334
- label: '',
335
- icon: _fa.FaColumns,
336
- fieldName: 'two_col_row_'
337
- }, {
338
- key: 'ThreeColumnRow',
339
- canHaveAnswer: false,
340
- name: intl.formatMessage({
341
- id: 'three-columns-row'
342
- }),
343
- label: '',
344
- icon: _fa.FaColumns,
345
- fieldName: 'three_col_row_'
346
- }, {
347
- key: 'FourColumnRow',
348
- element: 'MultiColumnRow',
349
- canHaveAnswer: false,
350
- name: intl.formatMessage({
351
- id: 'four-columns-row'
352
- }),
353
- label: '',
354
- icon: _fa.FaColumns,
355
- fieldName: 'four_col_row_',
356
- colCount: 4,
357
- className: 'col-md-3'
358
- }, {
359
- key: 'FiveColumnRow',
360
- element: 'MultiColumnRow',
361
- canHaveAnswer: false,
362
- name: intl.formatMessage({
363
- id: 'five-columns-row'
364
- }),
365
- label: '',
366
- icon: _fa.FaColumns,
367
- fieldName: 'five_col_row_',
368
- colCount: 5,
369
- className: 'col'
370
- }, {
371
- key: 'SixColumnRow',
372
- element: 'MultiColumnRow',
373
- canHaveAnswer: false,
374
- name: intl.formatMessage({
375
- id: 'six-columns-row'
376
- }),
377
- label: '',
378
- icon: _fa.FaColumns,
379
- fieldName: 'six_col_row_',
380
- colCount: 6,
381
- className: 'col-md-2'
382
- }, {
383
- key: 'Image',
384
- name: intl.formatMessage({
385
- id: 'image'
334
+ id: 'place-holder-label'
386
335
  }),
387
- label: '',
388
- icon: _fa.FaRegImage,
389
- fieldName: 'image_',
390
- src: ''
336
+ icon: _fa.FaPlus,
337
+ fieldName: 'number_input_',
338
+ showCustomName: true,
339
+ showDescription: true,
340
+ showHelp: true,
341
+ step: 1,
342
+ minValue: 0,
343
+ maxValue: 5,
344
+ hideRequiredAlert: true,
345
+ showLabelLocationPicker: true
391
346
  }, {
392
347
  key: 'Rating',
393
348
  canHaveAnswer: true,
@@ -403,22 +358,25 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
403
358
  showDescription: true,
404
359
  showHelp: true
405
360
  }, {
406
- key: 'DatePicker',
407
- canDefaultToday: true,
408
- canReadOnly: true,
409
- dateFormat: 'MM/dd/yyyy',
410
- timeFormat: 'hh:mm aa',
411
- showTimeSelect: false,
412
- showTimeSelectOnly: false,
413
- showTimeInput: false,
361
+ key: 'Range',
414
362
  name: intl.formatMessage({
415
- id: 'date'
363
+ id: 'range'
416
364
  }),
417
- icon: _fa.FaRegCalendarAlt,
365
+ icon: _fa.FaSlidersH,
418
366
  label: intl.formatMessage({
419
367
  id: 'place-holder-label'
420
368
  }),
421
- fieldName: 'date_picker_',
369
+ fieldName: 'range_',
370
+ step: 1,
371
+ defaultValue: 3,
372
+ minValue: 1,
373
+ maxValue: 5,
374
+ minLabel: intl.formatMessage({
375
+ id: 'easy'
376
+ }),
377
+ maxLabel: intl.formatMessage({
378
+ id: 'difficult'
379
+ }),
422
380
  showCustomName: true,
423
381
  showDescription: true,
424
382
  showHelp: true,
@@ -433,7 +391,51 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
433
391
  label: intl.formatMessage({
434
392
  id: 'signature'
435
393
  }),
436
- fieldName: 'signature_'
394
+ fieldName: 'signature_',
395
+ showCustomName: true,
396
+ showDescription: true,
397
+ showHelp: true,
398
+ hideRequiredAlert: true
399
+ }, {
400
+ key: 'Camera',
401
+ name: intl.formatMessage({
402
+ id: 'camera'
403
+ }),
404
+ icon: _fa.FaCamera,
405
+ label: intl.formatMessage({
406
+ id: 'place-holder-label'
407
+ }),
408
+ fieldName: 'camera_'
409
+ }, {
410
+ key: 'FileUpload',
411
+ name: intl.formatMessage({
412
+ id: 'file-upload'
413
+ }),
414
+ icon: _fa.FaFile,
415
+ label: intl.formatMessage({
416
+ id: 'place-holder-label'
417
+ }),
418
+ fieldName: 'file_upload_'
419
+ }, {
420
+ key: 'FieldSet',
421
+ canHaveAnswer: false,
422
+ name: intl.formatMessage({
423
+ id: 'fieldset'
424
+ }),
425
+ label: intl.formatMessage({
426
+ id: 'fieldset'
427
+ }),
428
+ icon: _fa.FaBars,
429
+ fieldName: 'fieldset-element'
430
+ }, {
431
+ key: 'Image',
432
+ name: intl.formatMessage({
433
+ id: 'image'
434
+ }),
435
+ label: '',
436
+ icon: _fa.FaRegImage,
437
+ fieldName: 'image_',
438
+ src: ''
437
439
  }, {
438
440
  key: 'HyperLink',
439
441
  name: intl.formatMessage({
@@ -459,49 +461,59 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
459
461
  filePath: '',
460
462
  _href: ''
461
463
  }, {
462
- key: 'Range',
464
+ key: 'TwoColumnRow',
465
+ canHaveAnswer: false,
463
466
  name: intl.formatMessage({
464
- id: 'range'
465
- }),
466
- icon: _fa.FaSlidersH,
467
- label: intl.formatMessage({
468
- id: 'place-holder-label'
469
- }),
470
- fieldName: 'range_',
471
- step: 1,
472
- defaultValue: 3,
473
- minValue: 1,
474
- maxValue: 5,
475
- minLabel: intl.formatMessage({
476
- id: 'easy'
477
- }),
478
- maxLabel: intl.formatMessage({
479
- id: 'difficult'
467
+ id: 'two-columns-row'
480
468
  }),
481
- showCustomName: true,
482
- showDescription: true,
483
- showHelp: true,
484
- hideRequiredAlert: true
469
+ label: '',
470
+ icon: _fa.FaColumns,
471
+ fieldName: 'two_col_row_'
485
472
  }, {
486
- key: 'Camera',
473
+ key: 'ThreeColumnRow',
474
+ canHaveAnswer: false,
487
475
  name: intl.formatMessage({
488
- id: 'camera'
476
+ id: 'three-columns-row'
489
477
  }),
490
- icon: _fa.FaCamera,
491
- label: intl.formatMessage({
492
- id: 'place-holder-label'
478
+ label: '',
479
+ icon: _fa.FaColumns,
480
+ fieldName: 'three_col_row_'
481
+ }, {
482
+ key: 'FourColumnRow',
483
+ element: 'MultiColumnRow',
484
+ canHaveAnswer: false,
485
+ name: intl.formatMessage({
486
+ id: 'four-columns-row'
493
487
  }),
494
- fieldName: 'camera_'
488
+ label: '',
489
+ icon: _fa.FaColumns,
490
+ fieldName: 'four_col_row_',
491
+ colCount: 4,
492
+ className: 'col-md-3'
495
493
  }, {
496
- key: 'FileUpload',
494
+ key: 'FiveColumnRow',
495
+ element: 'MultiColumnRow',
496
+ canHaveAnswer: false,
497
497
  name: intl.formatMessage({
498
- id: 'file-upload'
498
+ id: 'five-columns-row'
499
499
  }),
500
- icon: _fa.FaFile,
501
- label: intl.formatMessage({
502
- id: 'place-holder-label'
500
+ label: '',
501
+ icon: _fa.FaColumns,
502
+ fieldName: 'five_col_row_',
503
+ colCount: 5,
504
+ className: 'col'
505
+ }, {
506
+ key: 'SixColumnRow',
507
+ element: 'MultiColumnRow',
508
+ canHaveAnswer: false,
509
+ name: intl.formatMessage({
510
+ id: 'six-columns-row'
503
511
  }),
504
- fieldName: 'file_upload_'
512
+ label: '',
513
+ icon: _fa.FaColumns,
514
+ fieldName: 'six_col_row_',
515
+ colCount: 6,
516
+ className: 'col-md-2'
505
517
  }];
506
518
  }
507
519
  }, {
@@ -536,7 +548,7 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
536
548
  }
537
549
 
538
550
  // add placeholder to form input
539
- if (['NumberInput', 'EmailInput', 'TextInput', 'PhoneNumber', 'TextArea', 'DatePicker', 'Dropdown'].indexOf(element) !== -1) {
551
+ if (['NumberInput', 'EmailInput', 'TextInput', 'PhoneNumber', 'TextArea', 'DatePicker', 'Dropdown', 'Tags'].indexOf(element) !== -1) {
540
552
  elementOptions.showPlaceholder = true;
541
553
  }
542
554
  elementOptions.placeholder = item.placeholder;
@@ -555,6 +567,8 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
555
567
  }
556
568
  elementOptions.showCustomName = item.showCustomName;
557
569
  elementOptions.customName = item.customName;
570
+ elementOptions.showLabelLocationPicker = item.showLabelLocationPicker;
571
+ elementOptions.labelLocation = item.labelLocation;
558
572
  elementOptions.showHelp = item.showHelp;
559
573
  elementOptions.help = item.help;
560
574
  elementOptions.hideRequiredAlert = item.hideRequiredAlert;
@@ -657,8 +671,7 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
657
671
  items = _buildGroupItems.items,
658
672
  grouped = _buildGroupItems.grouped,
659
673
  groupKeys = _buildGroupItems.groupKeys;
660
- return /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Col, {
661
- md: 3,
674
+ return /*#__PURE__*/_react["default"].createElement("div", {
662
675
  className: "react-survey-builder-toolbar"
663
676
  }, /*#__PURE__*/_react["default"].createElement("h4", null, this.props.intl.formatMessage({
664
677
  id: 'toolbox'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-survey-builder",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "A complete survey builder for react.",
5
5
  "main": "lib/index.js",
6
6
  "types": "types/index.d.ts",
@@ -28,8 +28,10 @@
28
28
  },
29
29
  "author": "Garrett Lang",
30
30
  "dependencies": {
31
+ "@hookform/error-message": ">=2.0.1",
31
32
  "beedle": "^0.8.1",
32
33
  "classnames": "^2.2.6",
34
+ "create-react-class": "^15.7.0",
33
35
  "date-fns": "^2.16.1",
34
36
  "draft-js": "^0.11.7",
35
37
  "draftjs-to-html": "^0.9.1",
@@ -39,14 +41,18 @@
39
41
  "immutability-helper": "^3.1.1",
40
42
  "isomorphic-fetch": "^3.0.0",
41
43
  "lodash": "^4.17.21",
44
+ "moment": "^2.30.1",
45
+ "moment-timezone": "^0.5.44",
42
46
  "prop-types": "^15.7.2",
43
- "react-bootstrap": "^2.9.2",
47
+ "react-bootstrap": ">=2.9.2",
44
48
  "react-bootstrap-range-slider": "^3.0.8",
49
+ "react-bootstrap-typeahead": "^6.3.2",
45
50
  "react-dnd": "^11.1.3",
46
51
  "react-dnd-html5-backend": "^11.1.3",
47
52
  "react-draft-wysiwyg": "^1.15.0",
48
- "react-icons": "^5.0.1",
49
- "react-imask": "^7.0.1",
53
+ "react-hook-form": ">=7.45.4",
54
+ "react-icons": ">=5.0.1",
55
+ "react-imask": ">=7.0.1",
50
56
  "react-intl": "^5.24.3",
51
57
  "react-select": "^5.8.0",
52
58
  "react-signature-canvas": "^1.0.3",
@@ -54,9 +60,11 @@
54
60
  "xss": "^1.0.8"
55
61
  },
56
62
  "peerDependencies": {
63
+ "@hookform/error-message": ">=2.0.1",
57
64
  "react": ">=18.2.0",
58
65
  "react-bootstrap": ">=2.9.2",
59
66
  "react-dom": ">=18.2.0",
67
+ "react-hook-form": ">=7.45.4",
60
68
  "react-icons": ">=5.0.1",
61
69
  "react-imask": ">=7.0.1"
62
70
  },
package/types/index.d.ts CHANGED
@@ -28,6 +28,9 @@ type BaseElement = {
28
28
  | "Range"
29
29
  | "Camera";
30
30
  showDescription?: boolean;
31
+ showLabelLocationPicker?: boolean;
32
+ showHelp?: boolean;
33
+ hideRequiredAlert?: boolean;
31
34
  required: boolean;
32
35
  canHaveAlternateForm: boolean;
33
36
  canHaveDisplayHorizontal: boolean;
@@ -120,6 +123,7 @@ export type ToolbarItem = {
120
123
  };
121
124
 
122
125
  export interface SurveyBuilderProps {
126
+ formName?: string;
123
127
  toolbarItems?: ToolbarItem[];
124
128
  files?: any[];
125
129
  url?: string;
@@ -164,6 +168,10 @@ export interface SurveyGeneratorProps {
164
168
  // eslint-disable-next-line no-undef
165
169
  variables?: Record<any, any>;
166
170
  submitButton?: JSX.Element;
171
+ backButton?: JSX.Element;
172
+ buttons?: JSX.Element;
173
+ buttonClassName?: string;
174
+ formId?: string;
167
175
  }
168
176
 
169
177
  export class ReactSurveyGenerator extends React.Component<SurveyGeneratorProps> {}