UNPKG

@e-group/hooks

Version:

eGroup team react-hooks that share across projects.

50 lines (43 loc) 1.47 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import { useEffect, useState } from 'react'; import { Map } from '@e-group/immutable'; import { useDispatch, useSelector } from 'react-redux'; import { hasSubmitSucceeded, getFormValues, reset // @ts-ignore , submit } from 'redux-form/immutable'; export default function makeEditableFieldUtils(FORM) { const successSelector = state => hasSubmitSucceeded(FORM)(state); const valueSelector = state => getFormValues(FORM)(state) || Map(); return function useEditableFieldUtils() { const dispatch = useDispatch(); const _useState = useState({}), _useState2 = _slicedToArray(_useState, 2), afterSubmitActions = _useState2[0], setAfterSubmitActions = _useState2[1]; const submitSucceeded = useSelector(successSelector); const formValues = useSelector(valueSelector); useEffect(() => { if (submitSucceeded && afterSubmitActions.closeEditing) { afterSubmitActions.closeEditing(); } }, [afterSubmitActions, submitSucceeded]); const handleSave = (e, { closeEditing }) => { dispatch(submit(FORM)); setAfterSubmitActions({ closeEditing }); }; const handleClose = () => { dispatch(reset(FORM)); }; return { formValues: formValues, afterSubmitActions, setAfterSubmitActions, handleClose, handleSave, submitSucceeded }; }; }