instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
50 lines (46 loc) • 1.39 kB
JSX
import React, {Component} from 'react'
import ExclusiveField from 'components/exclusive_field'
import NonExclusiveField from 'components/non_exclusive_field'
import CommentField from 'components/comment_field'
import PopoverField from 'components/popover_field'
import FileField from 'components/file_field'
import TemplateField from 'components/template_field'
import ComputedField from './computed_field'
import AddressField from './address_field'
import NewField from './new_field'
import auto_bind from 'common/auto_bind'
export default class Field extends Component {
constructor(props) {
super(props)
auto_bind(this)
}
make_component(category) {
switch (category) {
case 'non_exclusive':
return NonExclusiveField
case 'exclusive':
return ExclusiveField
case 'comment':
return CommentField
case 'file':
return FileField
case 'popover':
return PopoverField
case 'template':
return TemplateField
case 'computed':
return ComputedField
case 'address':
return AddressField
case 'new_field':
return NewField
default:
return null
}
}
render() {
const {category, ...field} = this.props
const CategorizedField = this.make_component(category)
return CategorizedField ? <CategorizedField {...field} /> : null
}
}