UNPKG

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
"use strict"; 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