All files / Form Form.jsx

100% Statements 28/28
50% Branches 3/6
100% Functions 3/3
100% Lines 28/28

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 361x 1x   1x 1x 1x 1x 1x 1x   1x 4x   4x 5x 5x 5x   4x 4x 4x 4x 4x 4x 4x 4x   4x   4x 4x   1x 2x 2x  
import PropTypes from 'prop-types';
import React from 'react';
 
Form.propTypes = {
  action: PropTypes.string,
  method: PropTypes.oneOf(['get', 'post', 'put']),
  onSubmit: PropTypes.func,
  tagName: PropTypes.string
};
 
export function Form({ action, method = 'post', onSubmit, tagName = 'form', ...args }) {
  const Tag = tagName;
 
  const handleSubmit = (event) => {
    event.preventDefault();
    onSubmit(event);
  };
 
  if (action) {
    return (
      <Tag
        {...args}
        action={action}
        method={method}
        {...(onSubmit && { onSubmit: handleSubmit })}
      />
    );
  }
 
  return <Tag {...args} {...(onSubmit && { onSubmit: handleSubmit })} />;
}
 
Form.Submit = function Submit() {
  return <input type="submit" />;
};