import { Slider } from 'antd'; import { ariaDescribedByIds, rangeSpec, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps, GenericObjectType, } from '@rjsf/utils'; /** The `RangeWidget` component uses the `BaseInputTemplate` changing the type to `range` and wrapping the result * in a div, with the value along side it. * * @param props - The `WidgetProps` for this component */ export default function RangeWidget( props: WidgetProps, ) { const { autofocus, disabled, registry, id, onBlur, onChange, onFocus, options, placeholder, readonly, schema, value, } = props; const { formContext } = registry; const { readonlyAsDisabled = true } = formContext as GenericObjectType; const { min, max, step } = rangeSpec(schema); const emptyValue = options.emptyValue || ''; const handleChange = (nextValue: any) => onChange(nextValue === '' ? emptyValue : nextValue); const handleBlur = () => onBlur(id, value); const handleFocus = () => onFocus(id, value); // Antd's typescript definitions do not contain the following props that are actually necessary and, if provided, // they are used, so hacking them in via by spreading `extraProps` on the component to avoid typescript errors const extraProps = { placeholder, onBlur: !readonly ? handleBlur : undefined, onFocus: !readonly ? handleFocus : undefined, }; return ( ); }