// @flow import * as React from 'react'; import ReactDOMServer from 'react-dom/server'; import classnames from 'classnames'; import MarkdownPreview from 'component/common/markdown-preview'; import SimpleMDE from 'react-simplemde-editor'; import 'simplemde/dist/simplemde.min.css'; import Toggle from 'react-toggle'; type Props = { name: string, label?: string, render?: () => React.Node, prefix?: string, postfix?: string, error?: string | boolean, helper?: string | React.Node, type?: string, onChange?: any => any, defaultValue?: string | number, placeholder?: string | number, children?: React.Node, stretch?: boolean, affixClass?: string, // class applied to prefix/postfix label useToggle?: boolean, }; export class FormField extends React.PureComponent { render() { const { render, label, prefix, postfix, error, helper, name, type, children, stretch, affixClass, useToggle, ...inputProps } = this.props; const errorMessage = typeof error === 'object' ? error.message : error; let input; if (type) { if (type === 'select') { input = ( ); } else if (type === 'markdown') { input = (
; return ReactDOMServer.renderToString(preview); }, }} />
); } else if (type === 'textarea') { input =