react-minimalistic-use-form
Version:
Minimalistic react hook for handling forms without much pain.
82 lines • 3.51 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__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;
};
return __assign.apply(this, arguments);
};
import { htmlInputTypes, STATE_ACTIONS } from './enums';
var getInitialErrorsState = function (initialValues) { return Object.keys(initialValues).reduce(function (acc, fieldName) {
acc[fieldName] = {};
return acc;
}, {}); };
export var getInitialState = function (initialValues) {
if (initialValues === void 0) { initialValues = {}; }
return ({
values: initialValues,
initialValues: initialValues,
overriddenInitialValues: {},
errors: {},
initialIsFormValid: false,
isFormValid: false,
isSubmitting: false,
});
};
// The Type Guard Functions
function isSetFieldValueAction(action) {
return action.type === STATE_ACTIONS.SET_FIELD_VALUE;
}
function isSetIsFormValidAction(action) {
return action.type === STATE_ACTIONS.SET_IS_FORM_VALID;
}
function isSetFieldErrorsAction(action) {
return action.type === STATE_ACTIONS.SET_FIELD_ERRORS;
}
function isResetFormAction(action) {
return action.type === STATE_ACTIONS.RESET_FORM;
}
function isSetOverriddenInitialValuesAction(action) {
return action.type === STATE_ACTIONS.SET_OVERRIDDEN_INITIAL_VALUES;
}
function isSetIsSubmittingAction(action) {
return action.type === STATE_ACTIONS.SET_IS_SUBMITTING;
}
function isSetErrorsAction(action) {
return action.type === STATE_ACTIONS.SET_ERRORS;
}
export var reducer = function (state, action) {
var _a, _b;
if (isSetFieldValueAction(action)) {
var _c = action.payload, name_1 = _c.name, elementType = _c.type, checked = _c.checked, value = _c.value;
return __assign(__assign({}, state), { values: __assign(__assign({}, state.values), (_a = {}, _a[name_1] = elementType === htmlInputTypes.checkbox ? checked : value, _a)) });
}
if (isSetIsFormValidAction(action)) {
var isFormValid = action.payload.isFormValid;
return __assign(__assign({}, state), { isFormValid: isFormValid });
}
if (isSetFieldErrorsAction(action)) {
var _d = action.payload, name_2 = _d.name, errors = _d.errors;
return __assign(__assign({}, state), { errors: __assign(__assign({}, state.errors), (_b = {}, _b[name_2] = errors, _b)) });
}
if (isSetErrorsAction(action)) {
var errors = action.payload.errors;
return __assign(__assign({}, state), { errors: errors });
}
if (isResetFormAction(action)) {
return __assign(__assign({}, state), { values: state.overriddenInitialValues, isFormValid: state.initialIsFormValid, errors: getInitialErrorsState(state.overriddenInitialValues) });
}
if (isSetOverriddenInitialValuesAction(action)) {
var overriddenInitialValues = action.payload.overriddenInitialValues;
return __assign(__assign({}, state), { values: overriddenInitialValues, overriddenInitialValues: overriddenInitialValues, errors: getInitialErrorsState(overriddenInitialValues) });
}
if (isSetIsSubmittingAction(action)) {
var isSubmitting = action.payload.isSubmitting;
return __assign(__assign({}, state), { isSubmitting: isSubmitting });
}
return state;
};
//# sourceMappingURL=state.js.map