selectAsyncField.tsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import SelectField from 'sentry/components/deprecatedforms/selectField';
  2. import SelectAsyncControl from 'sentry/components/forms/selectAsyncControl';
  3. class SelectAsyncField extends SelectField {
  4. static defaultProps = {
  5. ...SelectField.defaultProps,
  6. placeholder: 'Start typing to search for an issue',
  7. };
  8. onResults = data => {
  9. const {name} = this.props;
  10. const results = data && data[name];
  11. return (results && results.map(({id, text}) => ({value: id, label: text}))) || [];
  12. };
  13. onQuery = query =>
  14. // Used by legacy integrations
  15. ({autocomplete_query: query, autocomplete_field: this.props.name});
  16. getField() {
  17. // Callers should be able to override all props except onChange
  18. // FormField calls props.onChange via `setValue`
  19. return (
  20. <SelectAsyncControl
  21. id={this.getId()}
  22. onResults={this.onResults}
  23. onQuery={this.onQuery}
  24. {...this.props}
  25. value={this.state.value}
  26. onChange={this.onChange}
  27. />
  28. );
  29. }
  30. }
  31. export default SelectAsyncField;