@arudovwen/react-form-builder
Version:
A complete form builder for react.
109 lines (108 loc) • 2.75 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _beedle = _interopRequireDefault(require("beedle"));
var _requests = require("./requests");
let _saveUrl;
let _onPost;
let _onLoad;
const store = new _beedle.default({
actions: {
setData(context, data, saveData) {
context.commit('setData', data);
if (saveData) this.save(data);
},
load(context, {
loadUrl,
saveUrl,
data,
saveAlways
}) {
_saveUrl = saveUrl;
const saveA = saveAlways || saveAlways === undefined;
context.commit('setSaveAlways', saveA);
if (_onLoad) {
_onLoad().then(x => {
if (data && data.length > 0 && x.length === 0) {
data.forEach(y => x.push(y));
}
this.setData(context, x);
});
} else if (loadUrl) {
(0, _requests.get)(loadUrl).then(x => {
if (data && data.length > 0 && x.length === 0) {
data.forEach(y => x.push(y));
}
this.setData(context, x);
});
} else {
this.setData(context, data);
}
},
create(context, element) {
const {
data,
saveAlways
} = context.state;
data.push(element);
this.setData(context, data, saveAlways);
},
delete(context, element) {
const {
data,
saveAlways
} = context.state;
data.splice(data.indexOf(element), 1);
this.setData(context, data, saveAlways);
},
post(context) {
const {
data
} = context.state;
this.setData(context, data, true);
},
updateOrder(context, elements) {
const {
saveAlways
} = context.state;
const newData = elements.filter(x => x && !x.parentId);
elements.filter(x => x && x.parentId).forEach(x => newData.push(x));
this.setData(context, newData, saveAlways);
},
save(data) {
if (_onPost) {
_onPost({
task_data: data
});
} else if (_saveUrl) {
(0, _requests.post)(_saveUrl, {
task_data: data
});
}
}
},
mutations: {
setData(state, payload) {
// eslint-disable-next-line no-param-reassign
state.data = payload;
return state;
},
setSaveAlways(state, payload) {
// eslint-disable-next-line no-param-reassign
state.saveAlways = payload;
return state;
}
},
initialState: {
data: [],
saveAlways: true
}
});
store.setExternalHandler = (onLoad, onPost) => {
_onLoad = onLoad;
_onPost = onPost;
};
var _default = exports.default = store;