import RangeSlider from 'sentry/components/forms/controls/rangeSlider'; import FormField from 'sentry/components/forms/formField'; // XXX(epurkhiser): This is wrong, it should not be inheriting these props import {InputFieldProps, OnEvent} from './inputField'; type DisabledFunction = (props: Omit) => boolean; type PlaceholderFunction = (props: any) => React.ReactNode; export interface RangeFieldProps extends Omit< React.ComponentProps, 'value' | 'disabled' | 'placeholder' | 'css' >, Omit< InputFieldProps, | 'disabled' | 'field' | 'step' | 'onChange' | 'max' | 'min' | 'onBlur' | 'css' | 'formatMessageValue' > { disabled?: boolean | DisabledFunction; formatMessageValue?: false | Function; placeholder?: string | PlaceholderFunction; } function onChange( fieldOnChange: OnEvent, value: number | '', e: React.FormEvent ) { fieldOnChange(value, e); } function defaultFormatMessageValue(value: number | '', {formatLabel}: RangeFieldProps) { return formatLabel?.(value) ?? value; } function RangeField({ formatMessageValue = defaultFormatMessageValue, disabled, ...otherProps }: RangeFieldProps) { const resolvedDisabled = typeof disabled === 'function' ? disabled(otherProps) : disabled; const props: InputFieldProps = { ...otherProps, disabled: resolvedDisabled, formatMessageValue, }; return ( {({children: _children, onChange: fieldOnChange, onBlur, value, ...fieldProps}) => ( onChange(fieldOnChange, val, event)} /> )} ); } export default RangeField;