import React, { Children, FunctionComponent, HTMLAttributes, ReactElement, FormEvent, ElementType, } from 'react'; import getClassName from '../../helpers/getClassName'; import classNames from '../../lib/classNames'; import usePlatform from '../../hooks/usePlatform'; import { HasChildren, HasRef } from '../../types'; const preventDefault = (e: FormEvent) => e.preventDefault(); export interface FormLayoutProps extends HTMLAttributes, HasRef, HasChildren { Component?: ElementType; } const FormLayout: FunctionComponent = (props: FormLayoutProps) => { const { children, Component, className, getRef, onSubmit, ...restProps } = props; const platform = usePlatform(); return (
{Children.toArray(children).map((field: ReactElement, i: number) => { if (field) { const { status, top, bottom } = field.props; return (
{top &&
{top}
} {field} {bottom &&
{bottom}
}
); } else { return null; } })}
{Component === 'form' && }
); }; FormLayout.defaultProps = { Component: 'form', onSubmit: preventDefault, }; export default FormLayout;