import Formsy from 'formsy-react'; import { FormsyProps } from 'formsy-react/dist/Formsy'; import { InjectedProps } from 'formsy-react/dist/withFormsy'; import hoistNonReactStatics from 'hoist-non-react-statics'; import React, { Component } from 'react'; import { Form as SemanticUIForm, StrictFormProps } from 'semantic-ui-react'; import FormsyCheckbox from './FormsyCheckbox'; import FormsyDropdown, { IFormsyDropdownProps } from './FormsyDropdown'; import FormsyInput, { IFormsyInputProps } from './FormsyInput'; import FormsyRadioGroup, { IFormsyRadioGroupProps } from './FormsyRadioGroup'; import FormsySelect from './FormsySelect'; import FormsyTextArea from './FormsyTextArea'; type IFormProps = Partial & Omit; class Form extends Component { static Button = SemanticUIForm.Button; static Radio = SemanticUIForm.Radio; static Field = SemanticUIForm.Field; static Group = SemanticUIForm.Group; static Checkbox = FormsyCheckbox; static Input = (props: Omit>) => ( ); static TextArea = ( props: Omit< IFormsyInputProps>, keyof InjectedProps > ) => ; static Select = ( props: Omit> ) => ; static RadioGroup = ( props: Omit> ) => ; static Dropdown = ( props: Omit> ) => ; render() { const { children } = this.props; const { mapping, validationErrors, onValid, onValidSubmit, onInvalid, onInvalidSubmit, onChange, preventExternalInvalidation, onError, onSubmit, forwardedRef, ...nonFormsyReactFormProps } = this.props; const { as = 'div', error, inverted, loading, reply, size, success, warning, widths, forwardedRef: _forwardedRef, className, ...nonSemanticUIFormProps } = this.props; return ( {children} ); } } export default hoistNonReactStatics( React.forwardRef((props: IFormProps, ref) => (
)), Form );