/** * * SelectMany * */ import React from 'react'; import Select from 'react-select'; import PropTypes from 'prop-types'; import 'react-select/dist/react-select.css'; import { isArray, isNull, isUndefined, get } from 'lodash'; import request from 'utils/request'; import templateObject from 'utils/templateObject'; import styles from './styles.scss'; class SelectMany extends React.Component { // eslint-disable-line react/prefer-stateless-function constructor(props) { super(props); this.state = { isLoading: true, }; } getOptions = (query) => { const params = { limit: 20, }; // Set `query` parameter if necessary if (query) { params.query = query; params.queryAttribute = this.props.relation.displayedAttribute; } // Request URL const requestUrlSuffix = query && this.props.record.get(this.props.relation.alias).toJS() ? this.props.record.get(this.props.relation.alias).toJS() : ''; const requestUrl = `/content-manager/explorer/${this.props.relation.model || this.props.relation.collection}/${requestUrlSuffix}`; // Call our request helper (see 'utils/request') return request(requestUrl, { method: 'GET', params, }) .then(response => { const options = isArray(response) ? response.map(item => ({ value: item, label: templateObject({ mainField: this.props.relation.displayedAttribute }, item).mainField, })) : [{ value: response, label: response[this.props.relation.displayedAttribute], }]; return { options }; }) .catch(() => { window.Strapi.notification.error('An error occurred during relationship fetch.'); }); } handleChange = (value) => { this.props.setRecordAttribute(this.props.relation.alias, value); } render() { const description = this.props.relation.description ?

{this.props.relation.description}

: ''; const value = this.props.record.get(this.props.relation.alias); /* eslint-disable jsx-a11y/label-has-for */ return (
{description} ({ value: get(item, 'value') || item, label: item.label || templateObject({ mainField: this.props.relation.displayedAttribute }, item).mainField, }))} />
); /* eslint-disable jsx-a11y/label-has-for */ } } SelectMany.propTypes = { record: PropTypes.oneOfType([ PropTypes.object, PropTypes.bool, ]).isRequired, relation: PropTypes.object.isRequired, setRecordAttribute: PropTypes.func.isRequired, }; export default SelectMany;