react-web-native-sketch
Version:
[TODO: We need an overview of how this can be used via npm vs as a local package]
101 lines • 4.1 kB
JavaScript
;
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("../../utils/common");
var TypeKeys;
(function (TypeKeys) {
TypeKeys["DISPLAY_ERRORS"] = "instacar/form/DISPLAY_ERRORS";
TypeKeys["SEND_FORM_DATA"] = "instacar/form/SEND_FORM_DATA";
TypeKeys["SEND_FORM_DATA_SUCCESS"] = "instacar/form/SEND_FORM_DATA_SUCCESS";
TypeKeys["SEND_FORM_DATA_FAIL"] = "instacar/form/SEND_FORM_DATA_FAIL";
})(TypeKeys = exports.TypeKeys || (exports.TypeKeys = {}));
exports.formHelpers = function (state, action) {
if (state === void 0) { state = {}; }
var _a, _b, _c, _d;
switch (action.type) {
case TypeKeys.DISPLAY_ERRORS:
return __assign({}, state, (_a = {}, _a[action.formName] = __assign({}, state[action.formName], { showErrors: true }), _a));
case TypeKeys.SEND_FORM_DATA:
return __assign({}, state, (_b = {}, _b[action.formName] = __assign({}, state[action.formName], { response: null, sendingForm: true, sendFormSuccess: false }), _b));
case TypeKeys.SEND_FORM_DATA_SUCCESS:
return __assign({}, state, (_c = {}, _c[action.formName] = __assign({}, state[action.formName], { response: action.response, sendingForm: false, sendFormSuccess: true }), _c));
case TypeKeys.SEND_FORM_DATA_FAIL:
return __assign({}, state, (_d = {}, _d[action.formName] = __assign({}, state[action.formName], { sendingForm: false, sendFormSuccess: false }), _d));
default:
return state;
}
};
exports.displayErrors = function (formName) { return ({
type: TypeKeys.DISPLAY_ERRORS,
formName: formName,
}); };
var hasErrors = function (formFields) {
if (!formFields) {
return false;
}
for (var index in formFields) {
var field = formFields[index];
if (common_1.isObject(field)) {
if (hasErrors(field)) {
return true;
}
}
else if (!!field) {
return true;
}
}
return false;
};
exports.sendFormData = function (formName, // FORM_NAMES_ENUM,
url, method, forceSend, types) {
if (forceSend === void 0) { forceSend = false; }
return function (dispatch, getState) {
var formData = getState().form[formName];
if (formData && formData.sendingForm) {
console.log('already sending form');
return;
}
var formFields = (formData && formData.values) || {};
if (exports.formHasErrors(formData)) {
dispatch(exports.displayErrors(formName));
return;
}
if (Object.keys(formFields).length !== 0 || forceSend === true) {
dispatch({
types: types || [
TypeKeys.SEND_FORM_DATA,
TypeKeys.SEND_FORM_DATA_SUCCESS,
TypeKeys.SEND_FORM_DATA_FAIL
],
body: method !== 'get' ? formFields : null,
queryParameters: method === 'get' ? formFields : null,
method: method,
url: url,
extraData: { formName: formName },
requestPayload: { formName: formName, },
successPayload: { formName: formName },
failurePayload: { formName: formName },
});
}
};
};
exports.formHasErrors = function (formData) {
var errors = !!formData.syncErrors
? Object.keys(formData.syncErrors)
.filter(function (field) { return !!common_1.getNestedField(formData, ['syncErrors', field]); })
.map(function (field) { return formData.syncErrors[field]; })
:
null;
if (hasErrors(errors) || formData.formError) {
return true;
}
return false;
};
//# sourceMappingURL=formHelpers.js.map