import {Component, Fragment} from 'react'; import {ModalRenderProps} from 'sentry/actionCreators/modal'; import Button from 'sentry/components/button'; import ButtonBar from 'sentry/components/buttonBar'; import NumberField from 'sentry/components/forms/fields/numberField'; import SelectField from 'sentry/components/forms/fields/selectField'; import {t} from 'sentry/locale'; import {ResolutionStatusDetails, SelectValue} from 'sentry/types'; type CountNames = 'ignoreCount' | 'ignoreUserCount'; type WindowNames = 'ignoreWindow' | 'ignoreUserWindow'; type Props = ModalRenderProps & { countLabel: string; countName: CountNames; label: string; onSelected: (statusDetails: ResolutionStatusDetails) => void; windowName: WindowNames; windowOptions: SelectValue[]; }; type State = { count: number; window: number | null; }; class CustomIgnoreCountModal extends Component { state: State = { count: 100, window: null, }; handleSubmit = () => { const {count, window} = this.state; const {countName, windowName} = this.props; const statusDetails: ResolutionStatusDetails = {[countName]: count}; if (window) { statusDetails[windowName] = window; } this.props.onSelected(statusDetails); this.props.closeModal(); }; handleChange = (name: keyof State, value: number) => { this.setState({[name]: value} as State); }; render() { const {Header, Footer, Body, countLabel, label, closeModal, windowOptions} = this.props; const {count, window} = this.state; return (

{label}

this.handleChange('count' as 'count', Number(val))} required placeholder={t('e.g. 100')} /> this.handleChange('window' as const, val)} options={windowOptions} placeholder={t('e.g. per hour')} allowClear help={t('(Optional) If supplied, this rule will apply as a rate of change.')} />
); } } export default CustomIgnoreCountModal;