saarnilauri/fida-imu

View on GitHub
src/components/hoc/getEntitySelect.js

Summary

Maintainability
A
1 hr
Test Coverage
import React, { Component } from 'react'
import { compose } from 'recompose'
import PropTypes from 'prop-types'
import { injectIntl } from 'react-intl'
import { Typeahead } from 'react-bootstrap-typeahead'

import withEntities from './withEntities'

const getEntitySelect = entity => {
  class EntitySelect extends Component {
    render() {
      const { ready, data, onChange, value } = this.props
      const { formatMessage } = this.props.intl
      const view = ready ? (
        <React.Fragment>
          <Typeahead
            id={entity}
            labelKey="label"
            multiple
            options={data}
            defaultSelected={value || []}
            onChange={onChange}
            placeholder={formatMessage({ id: `${entity}.select.placeholder` })}
          />
        </React.Fragment>
      ) : null
      return view
    }
  }

  EntitySelect.defaultProps = {
    data: [],
  }

  EntitySelect.propTypes = {
    ready: PropTypes.bool,
    data: PropTypes.array,
    intl: PropTypes.object,
    onChange: PropTypes.func,
    value: PropTypes.oneOfType([
      PropTypes.bool,
      PropTypes.object,
      PropTypes.array,
      PropTypes.string,
    ]),
  }

  return compose(
    injectIntl,
    withEntities(entity),
  )(EntitySelect)
}
export default getEntitySelect