import React, { PropTypes } from 'react'; import Select, { Creatable } from 'react-select'; const propTypes = { choices: PropTypes.array, clearable: PropTypes.bool, description: PropTypes.string, editUrl: PropTypes.string, freeForm: PropTypes.bool, label: PropTypes.string, multi: PropTypes.bool, name: PropTypes.string.isRequired, onChange: PropTypes.func, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.array]), }; const defaultProps = { choices: [], clearable: true, description: null, editUrl: null, freeForm: false, label: null, multi: false, onChange: () => {}, value: '', }; export default class SelectField extends React.Component { onChange(opt) { let optionValue = opt ? opt.value : null; // if multi, return options values as an array if (this.props.multi) { optionValue = opt ? opt.map((o) => o.value) : null; } if (this.props.name === 'datasource' && optionValue !== null) { this.props.onChange(this.props.name, optionValue, opt.label); } else { this.props.onChange(this.props.name, optionValue); } } renderOption(opt) { if (this.props.name === 'viz_type') { const url = `/static/assets/images/viz_thumbnails/${opt.value}.png`; return (