@bluecateng/auto-forms
Version:
Auto-wired form hooks
26 lines • 769 B
JavaScript
import { useMemo } from 'react';
import PropTypes from 'prop-types';
import useFormField from './useFormField';
import { jsx as _jsx } from "react/jsx-runtime";
export default ((Component, mapState) => {
const Wrapper = ({
name,
...props
}) => {
const state = useFormField(name);
const newProps = {
name,
...props,
...mapState(state)
};
// eslint-disable-next-line react-hooks/exhaustive-deps -- the values array contains the actual dependencies
return useMemo(() => /*#__PURE__*/_jsx(Component, {
...newProps
}), Object.values(newProps));
};
Wrapper.displayName = `Form(${Component.displayName || Component.name})`;
Wrapper.propTypes = {
name: PropTypes.string.isRequired
};
return Wrapper;
});