UNPKG

uniforms-react-semantic

Version:

Semantic React UI components for uniforms.

48 lines (40 loc) 1.71 kB
import BaseField from 'uniforms/BaseField'; import invariant from 'fbjs/lib/invariant'; import {createElement} from 'react'; import NumField from './NumField'; import BoolField from './BoolField'; import DateField from './DateField'; import ListField from './ListField'; import NestField from './NestField'; import TextField from './TextField'; import RadioField from './RadioField'; import SelectField from './SelectField'; export default class AutoField extends BaseField { static displayName = 'AutoField'; getChildContextName () { return this.context.uniforms.name; } render () { const props = this.getFieldProps(undefined, {ensureValue: false}); if (props.component === undefined) { if (props.allowedValues) { if (props.checkboxes && props.fieldType !== Array) { props.component = RadioField; } else { props.component = SelectField; } } else { switch (props.fieldType) { case Date: props.component = DateField; break; case Array: props.component = ListField; break; case Number: props.component = NumField; break; case Object: props.component = NestField; break; case String: props.component = TextField; break; case Boolean: props.component = BoolField; break; } invariant(props.component, 'Unsupported field type: %s', props.fieldType.toString()); } } return createElement(props.component, this.props); } }