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.
- package/LICENSE +7 -0
- package/README.md +236 -0
- package/dist/967.index.js +1 -0
- package/dist/app.css +1 -0
- package/dist/app.css.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.LICENSE.txt +46 -0
- package/lib/ItemTypes.js +10 -0
- package/lib/UUID.js +65 -0
- package/lib/dynamic-option-list.js +188 -0
- package/lib/fieldset/FieldSet.js +118 -0
- package/lib/fieldset/index.js +13 -0
- package/lib/form.js +604 -0
- package/lib/functions/index.js +45 -0
- package/lib/index.js +139 -0
- package/lib/language-provider/IntlMessages.js +15 -0
- package/lib/language-provider/entries/en-us.js +16 -0
- package/lib/language-provider/entries/it-it.js +16 -0
- package/lib/language-provider/entries/vi-vn.js +16 -0
- package/lib/language-provider/index.js +32 -0
- package/lib/language-provider/locales/en-us.json +97 -0
- package/lib/language-provider/locales/it-it.json +92 -0
- package/lib/language-provider/locales/vi-vn.json +82 -0
- package/lib/multi-column/MultiColumnRow.js +134 -0
- package/lib/multi-column/dustbin.js +152 -0
- package/lib/multi-column/grip.js +51 -0
- package/lib/multi-column/index.js +24 -0
- package/lib/preview.js +388 -0
- package/lib/sortable-element.js +177 -0
- package/lib/sortable-form-elements.js +67 -0
- package/lib/stores/registry.js +42 -0
- package/lib/stores/requests.js +31 -0
- package/lib/stores/store.js +138 -0
- package/lib/survey-dynamic-edit.js +54 -0
- package/lib/survey-elements/component-drag-handle.js +90 -0
- package/lib/survey-elements/component-drag-layer.js +68 -0
- package/lib/survey-elements/component-drag-preview.js +57 -0
- package/lib/survey-elements/component-header.js +29 -0
- package/lib/survey-elements/component-label.js +26 -0
- package/lib/survey-elements/custom-element.js +70 -0
- package/lib/survey-elements/date-picker.js +278 -0
- package/lib/survey-elements/header-bar.js +54 -0
- package/lib/survey-elements/index.js +1196 -0
- package/lib/survey-elements/myxss.js +29 -0
- package/lib/survey-elements/star-rating.js +335 -0
- package/lib/survey-elements-edit.js +613 -0
- package/lib/survey-place-holder.js +51 -0
- package/lib/survey-validator.js +103 -0
- package/lib/toolbar-draggable-item.js +59 -0
- package/lib/toolbar-group-item.js +39 -0
- package/lib/toolbar.js +680 -0
- package/lib/utils/custom-date-picker.js +93 -0
- package/package.json +114 -0
- 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
|
+
};
|