react-survey-builder 1.0.17 → 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.
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = void 0;
7
+ exports.myContentXSS = exports["default"] = void 0;
8
8
  var _xss = _interopRequireDefault(require("xss"));
9
9
  var myxss = new _xss["default"].FilterXSS({
10
10
  whiteList: {
@@ -26,4 +26,71 @@ var myxss = new _xss["default"].FilterXSS({
26
26
  ins: []
27
27
  }
28
28
  });
29
+ var myContentXSS = exports.myContentXSS = new _xss["default"].FilterXSS({
30
+ whiteList: {
31
+ a: ['href', 'title', 'target', 'style', 'class'],
32
+ abbr: ["title"],
33
+ address: [],
34
+ area: ["shape", "coords", "href", "alt"],
35
+ article: [],
36
+ aside: [],
37
+ b: [],
38
+ big: [],
39
+ blockquote: ["cite"],
40
+ br: [],
41
+ caption: [],
42
+ center: [],
43
+ cite: [],
44
+ code: [],
45
+ col: ["align", "valign", "span", "width"],
46
+ colgroup: ["align", "valign", "span", "width"],
47
+ dd: [],
48
+ del: ["datetime"],
49
+ details: ["open"],
50
+ div: ['style', 'class'],
51
+ dl: ['style', 'class'],
52
+ dt: ['style', 'class'],
53
+ em: [],
54
+ figcaption: [],
55
+ figure: [],
56
+ font: ["color", "size", "face"],
57
+ footer: [],
58
+ h1: ['style', 'class'],
59
+ h2: ['style', 'class'],
60
+ h3: ['style', 'class'],
61
+ h4: ['style', 'class'],
62
+ h5: ['style', 'class'],
63
+ h6: ['style', 'class'],
64
+ header: [],
65
+ hr: [],
66
+ i: [],
67
+ img: ["src", "alt", "title", "width", "height", "loading"],
68
+ ins: ["datetime"],
69
+ li: ['style', 'class'],
70
+ mark: [],
71
+ nav: [],
72
+ ol: ['style', 'class'],
73
+ p: ['style', 'class'],
74
+ pre: [],
75
+ s: [],
76
+ section: [],
77
+ small: [],
78
+ span: ['style', 'class'],
79
+ strike: [],
80
+ strong: [],
81
+ sub: [],
82
+ summary: [],
83
+ sup: [],
84
+ table: ["width", "border", "align", "valign"],
85
+ tbody: ["align", "valign"],
86
+ td: ["width", "rowspan", "colspan", "align", "valign"],
87
+ tfoot: ["align", "valign"],
88
+ th: ["width", "rowspan", "colspan", "align", "valign"],
89
+ thead: ["align", "valign"],
90
+ tr: ["rowspan", "align", "valign"],
91
+ tt: [],
92
+ u: [],
93
+ ul: ['style', 'class']
94
+ }
95
+ });
29
96
  var _default = exports["default"] = myxss;
@@ -23,7 +23,23 @@ var _fa = require("react-icons/fa");
23
23
  var _reactBootstrap = require("react-bootstrap");
24
24
  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
25
  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
- var toolbar = {
26
+ var bodyToolbar = {
27
+ options: ['inline', 'blockType', 'list', 'textAlign', 'fontSize', 'link', 'remove', 'history'],
28
+ inline: {
29
+ inDropdown: false,
30
+ className: undefined,
31
+ options: ['bold', 'italic', 'underline', 'strikethrough', 'monospace', 'superscript', 'subscript']
32
+ }
33
+ };
34
+ var headerToolbar = {
35
+ options: ['inline', 'list', 'textAlign', 'fontSize', 'link', 'history'],
36
+ inline: {
37
+ inDropdown: false,
38
+ className: undefined,
39
+ options: ['bold', 'italic', 'underline', 'superscript', 'subscript']
40
+ }
41
+ };
42
+ var labelToolbar = {
27
43
  options: ['inline', 'list', 'textAlign', 'fontSize', 'link', 'history'],
28
44
  inline: {
29
45
  inDropdown: false,
@@ -71,7 +87,8 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
71
87
  key: "onEditorStateChange",
72
88
  value: function onEditorStateChange(index, property, editorContent) {
73
89
  // const html = draftToHtml(convertToRaw(editorContent.getCurrentContent())).replace(/<p>/g, '<div>').replace(/<\/p>/g, '</div>');
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, '');
90
+ // const html = draftToHtml(convertToRaw(editorContent.getCurrentContent())).replace(/<p>/g, '').replace(/<\/p>/g, '').replace(/&nbsp;/g, ' ').replace(/(?:\r\n|\r|\n)/g, '');
91
+ var html = (0, _draftjsToHtml["default"])((0, _draftJs.convertToRaw)(editorContent.getCurrentContent())).replace(/&nbsp;/g, ' ').replace(/(?:\r\n|\r|\n)/g, '');
75
92
  var thisElement = this.state.element;
76
93
  thisElement[property] = html;
77
94
  this.setState({
@@ -143,12 +160,15 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
143
160
  var thisCheckedCenter = this.props.element.hasOwnProperty('center') ? this.props.element.center : false;
144
161
  var thisCheckedPageBreak = this.props.element.hasOwnProperty('pageBreakBefore') ? this.props.element.pageBreakBefore : false;
145
162
  var thisCheckedAlternateForm = this.props.element.hasOwnProperty('alternateForm') ? this.props.element.alternateForm : false;
163
+ var thisCheckedHideLabel = this.props.element.hasOwnProperty('hideLabel') ? this.props.element.hideLabel : false;
146
164
  var _this$props$element = this.props.element,
147
165
  canHavePageBreakBefore = _this$props$element.canHavePageBreakBefore,
148
166
  canHaveAlternateForm = _this$props$element.canHaveAlternateForm,
149
167
  canHaveDisplayHorizontal = _this$props$element.canHaveDisplayHorizontal,
150
168
  canHaveOptionCorrect = _this$props$element.canHaveOptionCorrect,
151
- canHaveOptionValue = _this$props$element.canHaveOptionValue;
169
+ canHaveOptionValue = _this$props$element.canHaveOptionValue,
170
+ _this$props$element$c = _this$props$element.canHideLabel,
171
+ canHideLabel = _this$props$element$c === void 0 ? false : _this$props$element$c;
152
172
  var canHaveImageSize = this.state.element.element === 'Image' || this.state.element.element === 'Camera';
153
173
  var thisFiles = this.props.files.length ? this.props.files : [];
154
174
  if (thisFiles.length < 1 || thisFiles.length > 0 && thisFiles[0].id !== '') {
@@ -175,18 +195,54 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
175
195
  }, this.props.element.text), /*#__PURE__*/_react["default"].createElement(_fa.FaTimes, {
176
196
  className: "float-end dismiss-edit",
177
197
  onClick: this.props.manualEditModeOff
178
- })), this.props.element.hasOwnProperty('content') && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
198
+ })), this.props.element.hasOwnProperty('content') && this.state.element.element === 'Header' && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
179
199
  className: "form-group mb-5"
180
200
  }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
181
201
  className: "fw-bold"
182
202
  }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
183
203
  id: "text-to-display"
184
204
  }), ":"), /*#__PURE__*/_react["default"].createElement(_reactDraftWysiwyg.Editor, {
185
- toolbar: toolbar,
205
+ toolbar: headerToolbar,
206
+ defaultEditorState: editorState,
207
+ onBlur: this.updateElement.bind(this),
208
+ onEditorStateChange: this.onEditorStateChange.bind(this, 0, 'content'),
209
+ stripPastedStyles: true
210
+ })), this.props.element.hasOwnProperty('content') && this.state.element.element === 'Label' && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
211
+ className: "form-group mb-5"
212
+ }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
213
+ className: "fw-bold"
214
+ }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
215
+ id: "text-to-display"
216
+ }), ":"), /*#__PURE__*/_react["default"].createElement(_reactDraftWysiwyg.Editor, {
217
+ toolbar: labelToolbar,
186
218
  defaultEditorState: editorState,
187
219
  onBlur: this.updateElement.bind(this),
188
220
  onEditorStateChange: this.onEditorStateChange.bind(this, 0, 'content'),
189
221
  stripPastedStyles: true
222
+ })), this.props.element.hasOwnProperty('content') && this.state.element.element === 'Paragraph' && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
223
+ className: "form-group mb-5"
224
+ }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
225
+ className: "fw-bold"
226
+ }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
227
+ id: "text-to-display"
228
+ }), ":"), /*#__PURE__*/_react["default"].createElement(_reactDraftWysiwyg.Editor, {
229
+ toolbar: labelToolbar,
230
+ defaultEditorState: editorState,
231
+ onBlur: this.updateElement.bind(this),
232
+ onEditorStateChange: this.onEditorStateChange.bind(this, 0, 'content'),
233
+ stripPastedStyles: true
234
+ })), this.props.element.hasOwnProperty('content') && this.state.element.element === 'ContentBody' && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
235
+ className: "form-group mb-5"
236
+ }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
237
+ className: "fw-bold"
238
+ }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
239
+ id: "text-to-display"
240
+ }), ":"), /*#__PURE__*/_react["default"].createElement(_reactDraftWysiwyg.Editor, {
241
+ toolbar: bodyToolbar,
242
+ defaultEditorState: editorState,
243
+ onBlur: this.updateElement.bind(this),
244
+ onEditorStateChange: this.onEditorStateChange.bind(this, 0, 'content')
245
+ //stripPastedStyles={true}
190
246
  })), this.props.element.hasOwnProperty('filePath') && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
191
247
  className: "form-group mb-5"
192
248
  }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
@@ -225,7 +281,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
225
281
  }, /*#__PURE__*/_react["default"].createElement(_IntlMessages["default"], {
226
282
  id: "display-label"
227
283
  }), ":"), /*#__PURE__*/_react["default"].createElement(_reactDraftWysiwyg.Editor, {
228
- toolbar: toolbar,
284
+ toolbar: labelToolbar,
229
285
  defaultEditorState: editorState,
230
286
  onBlur: this.updateElement.bind(this),
231
287
  onEditorStateChange: this.onEditorStateChange.bind(this, 0, 'label'),
@@ -499,7 +555,7 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
499
555
  defaultValue: this.props.element.defaultValue,
500
556
  onBlur: this.updateElement.bind(this),
501
557
  onChange: this.editElementProp.bind(this, 'defaultValue', 'value')
502
- }))), this.props.element.hasOwnProperty('static') && this.props.element["static"] && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
558
+ }))), this.props.element.hasOwnProperty('static') && this.props.element["static"] && this.props.element.hasOwnProperty('bold') && this.props.element.hasOwnProperty('italic') && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
503
559
  className: "form-group mb-5"
504
560
  }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
505
561
  className: "fw-bold"
@@ -567,7 +623,18 @@ var SurveyElementsEdit = exports["default"] = /*#__PURE__*/function (_React$Comp
567
623
  value: "ABOVE"
568
624
  }, "Above Form Field"), /*#__PURE__*/_react["default"].createElement("option", {
569
625
  value: "FLOATING"
570
- }, "Floating Inside Form Field"))), this.props.element.showHelp && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
626
+ }, "Floating Inside Form Field"))), canHideLabel && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
627
+ className: "form-group mb-5"
628
+ }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
629
+ className: "fw-bold"
630
+ }, "Hide Label:"), /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Check, {
631
+ id: "hide-label",
632
+ label: "Hide Label",
633
+ type: "checkbox",
634
+ checked: thisCheckedHideLabel,
635
+ value: true,
636
+ onChange: this.editElementProp.bind(this, 'hideLabel', 'checked')
637
+ })), this.props.element.showHelp && /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Group, {
571
638
  className: "form-group mb-5"
572
639
  }, /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Form.Label, {
573
640
  className: "fw-bold",
package/lib/toolbar.js CHANGED
@@ -20,6 +20,7 @@ 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 _pi = require("react-icons/pi");
23
24
  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
25
  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
26
  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; }
@@ -141,6 +142,16 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
141
142
  content: intl.formatMessage({
142
143
  id: 'place-holder-text'
143
144
  })
145
+ }, {
146
+ key: 'ContentBody',
147
+ name: intl.formatMessage({
148
+ id: 'content-body'
149
+ }),
150
+ "static": true,
151
+ icon: _pi.PiFileHtml,
152
+ content: intl.formatMessage({
153
+ id: 'place-holder-text'
154
+ })
144
155
  }, {
145
156
  key: 'LineBreak',
146
157
  name: intl.formatMessage({
@@ -219,7 +230,9 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
219
230
  showHelp: true,
220
231
  boxLabel: 'Agree To Rules & Regs',
221
232
  hideRequiredAlert: true,
222
- answerType: 'BOOLEAN'
233
+ answerType: 'BOOLEAN',
234
+ canHideLabel: true,
235
+ showLabel: false
223
236
  }, {
224
237
  key: 'RadioButtons',
225
238
  canHaveAnswer: true,
@@ -577,7 +590,7 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
577
590
  elementOptions.component = item.component || null;
578
591
  elementOptions.customOptions = item.customOptions || [];
579
592
  }
580
- if (item["static"]) {
593
+ if (item["static"] && ['Header', 'Paragraph', 'Label'].indexOf(element) !== -1) {
581
594
  elementOptions.bold = false;
582
595
  elementOptions.italic = false;
583
596
  }
@@ -588,6 +601,8 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
588
601
  elementOptions.showHelp = item.showHelp;
589
602
  elementOptions.help = item.help;
590
603
  elementOptions.hideRequiredAlert = item.hideRequiredAlert;
604
+ elementOptions.canHideLabel = item.canHideLabel;
605
+ elementOptions.hideLabel = item.hideLabel;
591
606
  if (item.canHaveAnswer) {
592
607
  elementOptions.canHaveAnswer = item.canHaveAnswer;
593
608
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-survey-builder",
3
- "version": "1.0.17",
3
+ "version": "1.0.18",
4
4
  "description": "A complete survey builder for react.",
5
5
  "main": "lib/index.js",
6
6
  "types": "types/index.d.ts",
package/types/index.d.ts CHANGED
@@ -7,6 +7,7 @@ type BaseElement = {
7
7
  | "Header Text"
8
8
  | "Label"
9
9
  | "Paragraph"
10
+ | "Static Content"
10
11
  | "Line Break"
11
12
  | "Dropdown"
12
13
  | "Tags"
@@ -30,6 +31,8 @@ type BaseElement = {
30
31
  showDescription?: boolean;
31
32
  showLabelLocationPicker?: boolean;
32
33
  showHelp?: boolean;
34
+ hideLabel?: boolean;
35
+ canHideLabel: boolean;
33
36
  hideRequiredAlert?: boolean;
34
37
  required: boolean;
35
38
  canHaveAlternateForm: boolean;