import {Component} from 'react'; import {ModalRenderProps} from 'sentry/actionCreators/modal'; import Button from 'sentry/components/button'; import {SelectAsyncField} from 'sentry/components/deprecatedforms'; import TimeSince from 'sentry/components/timeSince'; import Version from 'sentry/components/version'; import {t} from 'sentry/locale'; import space from 'sentry/styles/space'; import {Release} from 'sentry/types'; type Props = ModalRenderProps & { onSelected: ({inRelease: string}) => void; orgSlug: string; projectSlug?: string; }; type State = { version: string; }; class CustomResolutionModal extends Component { state: State = { version: '', }; onChange = (value: string | number | boolean) => { this.setState({version: value as string}); // TODO(ts): Add select value type as generic to select controls }; onAsyncFieldResults = (results: Release[]) => results.map(release => ({ value: release.version, label: , details: ( {t('Created')} ), release, })); render() { const {orgSlug, projectSlug, closeModal, onSelected, Header, Body, Footer} = this.props; const url = projectSlug ? `/projects/${orgSlug}/${projectSlug}/releases/` : `/organizations/${orgSlug}/releases/`; const onSubmit = (e: React.FormEvent) => { e.preventDefault(); onSelected({inRelease: this.state.version}); closeModal(); }; return (
{t('Resolved In')}
({query})} /> ); } } export default CustomResolutionModal;