@e-group/hooks
Version:
eGroup team react-hooks that share across projects.
61 lines (47 loc) • 1.71 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = makeEditableFieldUtils;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var _reactRedux = require("react-redux");
var _reduxForm = require("redux-form");
function makeEditableFieldUtils(FORM) {
const successSelector = state => (0, _reduxForm.hasSubmitSucceeded)(FORM)(state);
const valueSelector = state => (0, _reduxForm.getFormValues)(FORM)(state) || {};
return function useEditableFieldUtils() {
const dispatch = (0, _reactRedux.useDispatch)();
const _useState = (0, _react.useState)({}),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
afterSubmitActions = _useState2[0],
setAfterSubmitActions = _useState2[1];
const submitSucceeded = (0, _reactRedux.useSelector)(successSelector);
const formValues = (0, _reactRedux.useSelector)(valueSelector);
(0, _react.useEffect)(() => {
if (submitSucceeded && afterSubmitActions.closeEditing) {
afterSubmitActions.closeEditing();
}
}, [afterSubmitActions, submitSucceeded]);
const handleSave = (e, {
closeEditing
}) => {
dispatch((0, _reduxForm.submit)(FORM));
setAfterSubmitActions({
closeEditing
});
};
const handleClose = () => {
dispatch((0, _reduxForm.reset)(FORM));
};
return {
formValues: formValues,
afterSubmitActions,
setAfterSubmitActions,
handleClose,
handleSave,
submitSucceeded
};
};
}
;