react-survey-builder 1.0.1

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.
Files changed (54) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +236 -0
  3. package/dist/967.index.js +1 -0
  4. package/dist/app.css +1 -0
  5. package/dist/app.css.map +1 -0
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.LICENSE.txt +46 -0
  8. package/lib/ItemTypes.js +10 -0
  9. package/lib/UUID.js +65 -0
  10. package/lib/dynamic-option-list.js +188 -0
  11. package/lib/fieldset/FieldSet.js +118 -0
  12. package/lib/fieldset/index.js +13 -0
  13. package/lib/form.js +604 -0
  14. package/lib/functions/index.js +45 -0
  15. package/lib/index.js +139 -0
  16. package/lib/language-provider/IntlMessages.js +15 -0
  17. package/lib/language-provider/entries/en-us.js +16 -0
  18. package/lib/language-provider/entries/it-it.js +16 -0
  19. package/lib/language-provider/entries/vi-vn.js +16 -0
  20. package/lib/language-provider/index.js +32 -0
  21. package/lib/language-provider/locales/en-us.json +97 -0
  22. package/lib/language-provider/locales/it-it.json +92 -0
  23. package/lib/language-provider/locales/vi-vn.json +82 -0
  24. package/lib/multi-column/MultiColumnRow.js +134 -0
  25. package/lib/multi-column/dustbin.js +152 -0
  26. package/lib/multi-column/grip.js +51 -0
  27. package/lib/multi-column/index.js +24 -0
  28. package/lib/preview.js +388 -0
  29. package/lib/sortable-element.js +177 -0
  30. package/lib/sortable-form-elements.js +67 -0
  31. package/lib/stores/registry.js +42 -0
  32. package/lib/stores/requests.js +31 -0
  33. package/lib/stores/store.js +138 -0
  34. package/lib/survey-dynamic-edit.js +54 -0
  35. package/lib/survey-elements/component-drag-handle.js +90 -0
  36. package/lib/survey-elements/component-drag-layer.js +68 -0
  37. package/lib/survey-elements/component-drag-preview.js +57 -0
  38. package/lib/survey-elements/component-header.js +29 -0
  39. package/lib/survey-elements/component-label.js +26 -0
  40. package/lib/survey-elements/custom-element.js +70 -0
  41. package/lib/survey-elements/date-picker.js +278 -0
  42. package/lib/survey-elements/header-bar.js +54 -0
  43. package/lib/survey-elements/index.js +1196 -0
  44. package/lib/survey-elements/myxss.js +29 -0
  45. package/lib/survey-elements/star-rating.js +335 -0
  46. package/lib/survey-elements-edit.js +613 -0
  47. package/lib/survey-place-holder.js +51 -0
  48. package/lib/survey-validator.js +103 -0
  49. package/lib/toolbar-draggable-item.js +59 -0
  50. package/lib/toolbar-group-item.js +39 -0
  51. package/lib/toolbar.js +680 -0
  52. package/lib/utils/custom-date-picker.js +93 -0
  53. package/package.json +114 -0
  54. package/types/index.d.ts +180 -0
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _reactDnd = require("react-dnd");
12
+ var _surveyElements = _interopRequireDefault(require("../survey-elements"));
13
+ var _ItemTypes = _interopRequireDefault(require("../ItemTypes"));
14
+ var _customElement = _interopRequireDefault(require("../survey-elements/custom-element"));
15
+ var _registry = _interopRequireDefault(require("../stores/registry"));
16
+ var _store = _interopRequireDefault(require("../stores/store"));
17
+ var _excluded = ["onDropSuccess", "seq", "draggedItem", "parentIndex", "canDrop", "isOver", "isOverCurrent", "connectDropTarget", "items", "col", "getDataById"];
18
+ function getCustomElement(item, props) {
19
+ if (!item.component || typeof item.component !== 'function') {
20
+ item.component = _registry["default"].get(item.key);
21
+ if (!item.component) {
22
+ console.error("".concat(item.element, " was not registered"));
23
+ }
24
+ }
25
+ return /*#__PURE__*/_react["default"].createElement(_customElement["default"], (0, _extends2["default"])({}, props, {
26
+ mutable: false,
27
+ key: "form_".concat(item.id),
28
+ data: item
29
+ }));
30
+ }
31
+ function getElement(item, props) {
32
+ if (!item) return null;
33
+ if (item.custom) {
34
+ return getCustomElement(item, props);
35
+ }
36
+ var Element = _surveyElements["default"][item.element || item.key];
37
+ return /*#__PURE__*/_react["default"].createElement(Element, (0, _extends2["default"])({}, props, {
38
+ key: "form_".concat(item.id),
39
+ data: item
40
+ }));
41
+ }
42
+ function getStyle(backgroundColor) {
43
+ return {
44
+ border: '1px solid rgba(0,0,0,0.2)',
45
+ minHeight: '2rem',
46
+ minWidth: '7rem',
47
+ width: '100%',
48
+ backgroundColor: backgroundColor,
49
+ padding: 0,
50
+ "float": 'left'
51
+ };
52
+ }
53
+ function isContainer(item) {
54
+ if (item.itemType !== _ItemTypes["default"].CARD) {
55
+ var data = item.data;
56
+ if (data) {
57
+ if (data.isContainer) {
58
+ return true;
59
+ }
60
+ if (data.field_name) {
61
+ return data.field_name.indexOf('_col_row') > -1;
62
+ }
63
+ }
64
+ }
65
+ return false;
66
+ }
67
+ var Dustbin = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
68
+ var onDropSuccess = _ref.onDropSuccess,
69
+ seq = _ref.seq,
70
+ draggedItem = _ref.draggedItem,
71
+ parentIndex = _ref.parentIndex,
72
+ canDrop = _ref.canDrop,
73
+ isOver = _ref.isOver,
74
+ isOverCurrent = _ref.isOverCurrent,
75
+ connectDropTarget = _ref.connectDropTarget,
76
+ items = _ref.items,
77
+ col = _ref.col,
78
+ getDataById = _ref.getDataById,
79
+ rest = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
80
+ var item = getDataById(items[col]);
81
+ _react["default"].useImperativeHandle(ref, function () {
82
+ return {
83
+ onDrop: function onDrop(dropped) {
84
+ console.log("dropped ites");
85
+ var data = dropped.data;
86
+ if (data) {
87
+ onDropSuccess && onDropSuccess();
88
+ _store["default"].dispatch('deleteLastItem');
89
+ }
90
+ }
91
+ };
92
+ }, []);
93
+ var element = getElement(item, rest);
94
+ var sameCard = draggedItem ? draggedItem.index === parentIndex : false;
95
+
96
+ // console.log('dragIndex:',draggedItem?.index)
97
+ // console.log('HoverIndex:',parentIndex)
98
+ // console.log('SameCard:',sameCard)
99
+
100
+ var backgroundColor = 'rgba(0, 0, 0, .03)';
101
+ if (!sameCard && isOver && canDrop && !draggedItem.data.isContainer) {
102
+ backgroundColor = '#F7F589';
103
+ }
104
+
105
+ // console.log('sameCard, canDrop', sameCard, canDrop);
106
+ return connectDropTarget( /*#__PURE__*/_react["default"].createElement("div", {
107
+ style: !sameCard ? getStyle(backgroundColor) : getStyle('rgba(0, 0, 0, .03')
108
+ }, !element && /*#__PURE__*/_react["default"].createElement("span", null, "Drop your element here "), element));
109
+ });
110
+ var _default = exports["default"] = (0, _reactDnd.DropTarget)(function (props) {
111
+ return props.accepts;
112
+ }, {
113
+ drop: function drop(props, monitor, component) {
114
+ if (!component) {
115
+ return;
116
+ }
117
+
118
+ // //Do nothing whith busy dustbin
119
+ // if(props.items[props.col]) return;
120
+ // Allow swap column if target and source are in same multi column row
121
+ var isBusy = !!props.items[props.col];
122
+ var item = monitor.getItem();
123
+
124
+ // Do nothing when moving the box inside the same column
125
+ if (props.col === item.col && props.items[props.col] === item.id) return;
126
+
127
+ // Do not allow replace component other than both items in same multi column row
128
+ if (item.col === undefined && props.items[props.col]) {
129
+ _store["default"].dispatch('resetLastItem');
130
+ return;
131
+ }
132
+ if (!isContainer(item)) {
133
+ component.onDrop(item);
134
+ console.log("calling on Drop from 137", item);
135
+ if (item.data && typeof props.setAsChild === 'function') {
136
+ var isNew = !item.data.id;
137
+ var data = isNew ? item.onCreate(item.data) : item.data;
138
+ props.setAsChild(props.data, data, props.col, isBusy);
139
+ }
140
+ }
141
+ }
142
+ }, function (connect, monitor) {
143
+ return {
144
+ connectDropTarget: connect.dropTarget(),
145
+ draggedItem: monitor.getItem() ? monitor.getItem() : null,
146
+ isOver: monitor.isOver(),
147
+ isOverCurrent: monitor.isOver({
148
+ shallow: true
149
+ }),
150
+ canDrop: monitor.canDrop()
151
+ };
152
+ })(Dustbin);
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactDnd = require("react-dnd");
10
+ var _ItemTypes = _interopRequireDefault(require("../ItemTypes"));
11
+ var style = {
12
+ // display: 'inline-block',
13
+ // border: '1px dashed gray',
14
+ // padding: '0.5rem 1rem',
15
+ // backgroundColor: 'white',
16
+ cursor: 'move'
17
+ };
18
+ var gripSource = {
19
+ beginDrag: function beginDrag(props) {
20
+ var data = props.data,
21
+ index = props.index,
22
+ onDestroy = props.onDestroy,
23
+ setAsChild = props.setAsChild,
24
+ getDataById = props.getDataById;
25
+ return {
26
+ itemType: _ItemTypes["default"].BOX,
27
+ index: data.parentId ? -1 : index,
28
+ parentIndex: data.parentIndex,
29
+ id: data.id,
30
+ col: data.col,
31
+ onDestroy: onDestroy,
32
+ setAsChild: setAsChild,
33
+ getDataById: getDataById,
34
+ data: data
35
+ };
36
+ }
37
+ };
38
+ var Grip = function Grip(_ref) {
39
+ var connectDragSource = _ref.connectDragSource;
40
+ return connectDragSource( /*#__PURE__*/_react["default"].createElement("div", {
41
+ className: "btn is-isolated",
42
+ style: style
43
+ }, /*#__PURE__*/_react["default"].createElement("i", {
44
+ className: "is-isolated fas fa-grip-vertical"
45
+ })));
46
+ };
47
+ var _default = exports["default"] = (0, _reactDnd.DragSource)(_ItemTypes["default"].BOX, gripSource, function (connect) {
48
+ return {
49
+ connectDragSource: connect.dragSource()
50
+ };
51
+ })(Grip);
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "MultiColumnRow", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _MultiColumnRow.MultiColumnRow;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ThreeColumnRow", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _MultiColumnRow.ThreeColumnRow;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "TwoColumnRow", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _MultiColumnRow.TwoColumnRow;
22
+ }
23
+ });
24
+ var _MultiColumnRow = require("./MultiColumnRow");
package/lib/preview.js ADDED
@@ -0,0 +1,388 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+ var _react = _interopRequireDefault(require("react"));
17
+ var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
18
+ var _store = _interopRequireDefault(require("./stores/store"));
19
+ var _surveyDynamicEdit = _interopRequireDefault(require("./survey-dynamic-edit"));
20
+ var _sortableFormElements = _interopRequireDefault(require("./sortable-form-elements"));
21
+ var _componentDragLayer = _interopRequireDefault(require("./survey-elements/component-drag-layer"));
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); }; }
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; } } /**
24
+ * <Preview />
25
+ */
26
+ var PlaceHolder = _sortableFormElements["default"].PlaceHolder;
27
+ var Preview = exports["default"] = /*#__PURE__*/function (_React$Component) {
28
+ (0, _inherits2["default"])(Preview, _React$Component);
29
+ var _super = _createSuper(Preview);
30
+ function Preview(props) {
31
+ var _this;
32
+ (0, _classCallCheck2["default"])(this, Preview);
33
+ _this = _super.call(this, props);
34
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
35
+ data: [],
36
+ answer_data: {}
37
+ });
38
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "editModeOff", function (e) {
39
+ if (_this.editForm.current && !_this.editForm.current.contains(e.target)) {
40
+ _this.manualEditModeOff();
41
+ }
42
+ });
43
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "manualEditModeOff", function () {
44
+ var editElement = _this.props.editElement;
45
+ if (editElement && editElement.dirty) {
46
+ editElement.dirty = false;
47
+ _this.updateElement(editElement);
48
+ }
49
+ _this.props.manualEditModeOff();
50
+ });
51
+ var onLoad = props.onLoad,
52
+ onPost = props.onPost;
53
+ _store["default"].setExternalHandler(onLoad, onPost);
54
+ _this.editForm = /*#__PURE__*/_react["default"].createRef();
55
+ _this.state = {
56
+ data: props.data || [],
57
+ answer_data: {}
58
+ };
59
+ _this.seq = 0;
60
+ _this._onUpdate = _this._onChange.bind((0, _assertThisInitialized2["default"])(_this));
61
+ _this.getDataById = _this.getDataById.bind((0, _assertThisInitialized2["default"])(_this));
62
+ _this.moveCard = _this.moveCard.bind((0, _assertThisInitialized2["default"])(_this));
63
+ _this.insertCard = _this.insertCard.bind((0, _assertThisInitialized2["default"])(_this));
64
+ _this.setAsChild = _this.setAsChild.bind((0, _assertThisInitialized2["default"])(_this));
65
+ _this.removeChild = _this.removeChild.bind((0, _assertThisInitialized2["default"])(_this));
66
+ _this._onDestroy = _this._onDestroy.bind((0, _assertThisInitialized2["default"])(_this));
67
+ return _this;
68
+ }
69
+ (0, _createClass2["default"])(Preview, [{
70
+ key: "componentDidMount",
71
+ value: function componentDidMount() {
72
+ var _this2 = this;
73
+ var _this$props = this.props,
74
+ data = _this$props.data,
75
+ url = _this$props.url,
76
+ saveUrl = _this$props.saveUrl,
77
+ saveAlways = _this$props.saveAlways;
78
+ _store["default"].subscribe(function (state) {
79
+ return _this2._onUpdate(state.data);
80
+ });
81
+ _store["default"].dispatch('load', {
82
+ loadUrl: url,
83
+ saveUrl: saveUrl,
84
+ data: data || [],
85
+ saveAlways: saveAlways
86
+ });
87
+ document.addEventListener('mousedown', this.editModeOff);
88
+ }
89
+ }, {
90
+ key: "componentWillUnmount",
91
+ value: function componentWillUnmount() {
92
+ document.removeEventListener('mousedown', this.editModeOff);
93
+ }
94
+ }, {
95
+ key: "_setValue",
96
+ value: function _setValue(text) {
97
+ return text.replace(/[^A-Z0-9]+/ig, '_').toLowerCase();
98
+ }
99
+ }, {
100
+ key: "updateElement",
101
+ value: function updateElement(element) {
102
+ var data = this.state.data;
103
+ var found = false;
104
+ for (var i = 0, len = data.length; i < len; i++) {
105
+ if (element.id === data[i].id) {
106
+ data[i] = element;
107
+ found = true;
108
+ break;
109
+ }
110
+ }
111
+ if (found) {
112
+ this.seq = this.seq > 100000 ? 0 : this.seq + 1;
113
+ _store["default"].dispatch('updateOrder', data);
114
+ }
115
+ }
116
+ }, {
117
+ key: "_onChange",
118
+ value: function _onChange(data) {
119
+ var _this3 = this;
120
+ var answer_data = {};
121
+ data.forEach(function (item) {
122
+ if (item && item.readOnly && _this3.props.variables[item.variableKey]) {
123
+ answer_data[item.field_name] = _this3.props.variables[item.variableKey];
124
+ }
125
+ });
126
+ this.setState({
127
+ data: data,
128
+ answer_data: answer_data
129
+ });
130
+ }
131
+ }, {
132
+ key: "_onDestroy",
133
+ value: function _onDestroy(item) {
134
+ var _this4 = this;
135
+ if (item.childItems) {
136
+ item.childItems.forEach(function (x) {
137
+ var child = _this4.getDataById(x);
138
+ if (child) {
139
+ _store["default"].dispatch('delete', child);
140
+ }
141
+ });
142
+ }
143
+ _store["default"].dispatch('delete', item);
144
+ }
145
+ }, {
146
+ key: "getDataById",
147
+ value: function getDataById(id) {
148
+ var data = this.state.data;
149
+ return data.find(function (x) {
150
+ return x && x.id === id;
151
+ });
152
+ }
153
+ }, {
154
+ key: "swapChildren",
155
+ value: function swapChildren(data, item, child, col) {
156
+ if (child.col !== undefined && item.id !== child.parentId) {
157
+ return false;
158
+ }
159
+ if (!(child.col !== undefined && child.col !== col && item.childItems[col])) {
160
+ // No child was assigned yet in both source and target.
161
+ return false;
162
+ }
163
+ var oldId = item.childItems[col];
164
+ var oldItem = this.getDataById(oldId);
165
+ var oldCol = child.col;
166
+ // eslint-disable-next-line no-param-reassign
167
+ item.childItems[oldCol] = oldId;
168
+ oldItem.col = oldCol;
169
+ // eslint-disable-next-line no-param-reassign
170
+ item.childItems[col] = child.id;
171
+ child.col = col;
172
+ _store["default"].dispatch('updateOrder', data);
173
+ return true;
174
+ }
175
+ }, {
176
+ key: "setAsChild",
177
+ value: function setAsChild(item, child, col, isBusy) {
178
+ var data = this.state.data;
179
+ if (this.swapChildren(data, item, child, col)) {
180
+ return;
181
+ }
182
+ if (isBusy) {
183
+ return;
184
+ }
185
+ var oldParent = this.getDataById(child.parentId);
186
+ var oldCol = child.col;
187
+ // eslint-disable-next-line no-param-reassign
188
+ item.childItems[col] = child.id;
189
+ child.col = col;
190
+ // eslint-disable-next-line no-param-reassign
191
+ child.parentId = item.id;
192
+ // eslint-disable-next-line no-param-reassign
193
+ child.parentIndex = data.indexOf(item);
194
+ if (oldParent) {
195
+ oldParent.childItems[oldCol] = null;
196
+ }
197
+ var list = data.filter(function (x) {
198
+ return x && x.parentId === item.id;
199
+ });
200
+ var toRemove = list.filter(function (x) {
201
+ return item.childItems.indexOf(x.id) === -1;
202
+ });
203
+ var newData = data;
204
+ if (toRemove.length) {
205
+ // console.log('toRemove', toRemove);
206
+ newData = data.filter(function (x) {
207
+ return toRemove.indexOf(x) === -1;
208
+ });
209
+ }
210
+ if (!this.getDataById(child.id)) {
211
+ newData.push(child);
212
+ }
213
+ _store["default"].dispatch('updateOrder', newData);
214
+ }
215
+ }, {
216
+ key: "removeChild",
217
+ value: function removeChild(item, col) {
218
+ var data = this.state.data;
219
+ var oldId = item.childItems[col];
220
+ var oldItem = this.getDataById(oldId);
221
+ if (oldItem) {
222
+ var newData = data.filter(function (x) {
223
+ return x !== oldItem;
224
+ });
225
+ // eslint-disable-next-line no-param-reassign
226
+ item.childItems[col] = null;
227
+ // delete oldItem.parentId;
228
+ this.seq = this.seq > 100000 ? 0 : this.seq + 1;
229
+ _store["default"].dispatch('updateOrder', newData);
230
+ this.setState({
231
+ data: newData
232
+ });
233
+ }
234
+ }
235
+ }, {
236
+ key: "restoreCard",
237
+ value: function restoreCard(item, id) {
238
+ var data = this.state.data;
239
+ var parent = this.getDataById(item.data.parentId);
240
+ var oldItem = this.getDataById(id);
241
+ if (parent && oldItem) {
242
+ var newIndex = data.indexOf(oldItem);
243
+ var newData = (0, _toConsumableArray2["default"])(data); // data.filter(x => x !== oldItem);
244
+ // eslint-disable-next-line no-param-reassign
245
+ parent.childItems[oldItem.col] = null;
246
+ delete oldItem.parentId;
247
+ // eslint-disable-next-line no-param-reassign
248
+ delete item.setAsChild;
249
+ // eslint-disable-next-line no-param-reassign
250
+ delete item.parentIndex;
251
+ // eslint-disable-next-line no-param-reassign
252
+ item.index = newIndex;
253
+ this.seq = this.seq > 100000 ? 0 : this.seq + 1;
254
+ _store["default"].dispatch('updateOrder', newData);
255
+ this.setState({
256
+ data: newData
257
+ });
258
+ }
259
+ }
260
+ }, {
261
+ key: "insertCard",
262
+ value: function insertCard(item, hoverIndex, id) {
263
+ var data = this.state.data;
264
+ if (id) {
265
+ this.restoreCard(item, id);
266
+ } else {
267
+ data.splice(hoverIndex, 0, item);
268
+ this.saveData(item, hoverIndex, hoverIndex);
269
+ _store["default"].dispatch('insertItem', item);
270
+ }
271
+ }
272
+ }, {
273
+ key: "moveCard",
274
+ value: function moveCard(dragIndex, hoverIndex) {
275
+ var data = this.state.data;
276
+ var dragCard = data[dragIndex];
277
+ this.saveData(dragCard, dragIndex, hoverIndex);
278
+ }
279
+
280
+ // eslint-disable-next-line no-unused-vars
281
+ }, {
282
+ key: "cardPlaceHolder",
283
+ value: function cardPlaceHolder(dragIndex, hoverIndex) {
284
+ // Dummy
285
+ }
286
+ }, {
287
+ key: "saveData",
288
+ value: function saveData(dragCard, dragIndex, hoverIndex) {
289
+ var newData = (0, _immutabilityHelper["default"])(this.state, {
290
+ data: {
291
+ $splice: [[dragIndex, 1], [hoverIndex, 0, dragCard]]
292
+ }
293
+ });
294
+ this.setState(newData);
295
+ _store["default"].dispatch('updateOrder', newData.data);
296
+ }
297
+ }, {
298
+ key: "getElement",
299
+ value: function getElement(item, index) {
300
+ if (item.custom) {
301
+ if (!item.component || typeof item.component !== 'function') {
302
+ // eslint-disable-next-line no-param-reassign
303
+ item.component = this.props.registry.get(item.key);
304
+ }
305
+ }
306
+ var SortableFormElement = _sortableFormElements["default"][item.element];
307
+ if (SortableFormElement === null) {
308
+ return null;
309
+ }
310
+ return /*#__PURE__*/_react["default"].createElement(SortableFormElement, {
311
+ id: item.id,
312
+ seq: this.seq,
313
+ index: index,
314
+ moveCard: this.moveCard,
315
+ insertCard: this.insertCard,
316
+ mutable: false,
317
+ parent: this.props.parent,
318
+ editModeOn: this.props.editModeOn,
319
+ isDraggable: true,
320
+ key: item.id,
321
+ sortData: item.id,
322
+ data: item,
323
+ getDataById: this.getDataById,
324
+ setAsChild: this.setAsChild,
325
+ removeChild: this.removeChild,
326
+ _onDestroy: this._onDestroy
327
+ });
328
+ }
329
+ }, {
330
+ key: "showEditForm",
331
+ value: function showEditForm() {
332
+ var _this5 = this;
333
+ var handleUpdateElement = function handleUpdateElement(element) {
334
+ return _this5.updateElement(element);
335
+ };
336
+ handleUpdateElement.bind(this);
337
+ var formElementEditProps = {
338
+ showCorrectColumn: this.props.showCorrectColumn,
339
+ files: this.props.files,
340
+ manualEditModeOff: this.manualEditModeOff,
341
+ preview: this,
342
+ element: this.props.editElement,
343
+ updateElement: handleUpdateElement
344
+ };
345
+ return this.props.renderEditForm(formElementEditProps);
346
+ }
347
+ }, {
348
+ key: "render",
349
+ value: function render() {
350
+ var _this6 = this;
351
+ var classes = this.props.className;
352
+ if (this.props.editMode) {
353
+ classes += ' is-editing';
354
+ }
355
+ var data = this.state.data.filter(function (x) {
356
+ return !!x && !x.parentId;
357
+ });
358
+ var items = data.map(function (item, index) {
359
+ return _this6.getElement(item, index);
360
+ });
361
+ return /*#__PURE__*/_react["default"].createElement("div", {
362
+ className: classes
363
+ }, /*#__PURE__*/_react["default"].createElement("div", {
364
+ className: "edit-form",
365
+ ref: this.editForm
366
+ }, this.props.editElement !== null && this.showEditForm()), /*#__PURE__*/_react["default"].createElement("div", {
367
+ className: "Sortable"
368
+ }, items), /*#__PURE__*/_react["default"].createElement(PlaceHolder, {
369
+ id: "form-place-holder",
370
+ show: items.length === 0,
371
+ index: items.length,
372
+ moveCard: this.cardPlaceHolder,
373
+ insertCard: this.insertCard
374
+ }), /*#__PURE__*/_react["default"].createElement(_componentDragLayer["default"], null));
375
+ }
376
+ }]);
377
+ return Preview;
378
+ }(_react["default"].Component);
379
+ Preview.defaultProps = {
380
+ showCorrectColumn: false,
381
+ files: [],
382
+ editMode: false,
383
+ editElement: null,
384
+ className: 'col-md-9 react-survey-builder-preview float-start',
385
+ renderEditForm: function renderEditForm(props) {
386
+ return /*#__PURE__*/_react["default"].createElement(_surveyDynamicEdit["default"], props);
387
+ }
388
+ };