UNPKG

strapi-plugin-content-manager

Version:

A powerful UI to easily manage your data.

72 lines (67 loc) 1.77 kB
import React, { memo } from 'react'; import PropTypes from 'prop-types'; import { get, isNull } from 'lodash'; import Select from 'react-select'; import SingleValue from './SingleValue'; function SelectOne({ components, mainField, name, isDisabled, isLoading, onChange, onInputChange, onMenuClose, onMenuOpen, onMenuScrollToBottom, options, placeholder, styles, value, }) { return ( <Select components={{ ...components, SingleValue }} id={name} isClearable isDisabled={isDisabled} isLoading={isLoading} mainField={mainField} options={options} onChange={onChange} onInputChange={onInputChange} onMenuClose={onMenuClose} onMenuOpen={onMenuOpen} onMenuScrollToBottom={onMenuScrollToBottom} placeholder={placeholder} styles={styles} value={isNull(value) ? null : { label: get(value, [mainField.name], ''), value }} /> ); } SelectOne.defaultProps = { components: {}, value: null, }; SelectOne.propTypes = { components: PropTypes.object, isDisabled: PropTypes.bool.isRequired, isLoading: PropTypes.bool.isRequired, mainField: PropTypes.shape({ name: PropTypes.string.isRequired, schema: PropTypes.shape({ type: PropTypes.string.isRequired, }).isRequired, }).isRequired, name: PropTypes.string.isRequired, onChange: PropTypes.func.isRequired, onInputChange: PropTypes.func.isRequired, onMenuClose: PropTypes.func.isRequired, onMenuOpen: PropTypes.func.isRequired, onMenuScrollToBottom: PropTypes.func.isRequired, options: PropTypes.array.isRequired, placeholder: PropTypes.node.isRequired, styles: PropTypes.object.isRequired, value: PropTypes.object, }; export default memo(SelectOne);