portainer/app/react/components/form-components/Slider/SliderWithInput.tsx

51 lines
1.1 KiB
TypeScript

import { Input } from '../Input';
import { Slider } from './Slider';
export function SliderWithInput({
value,
onChange,
max,
step = 1,
dataCy,
visibleTooltip = false,
}: {
value: number;
onChange: (value: number) => void;
max: number;
dataCy: string;
step?: number;
visibleTooltip?: boolean;
}) {
return (
<div className="flex items-center gap-4">
{max && (
<div className="mr-2 flex-1">
<Slider
onChange={(value) =>
onChange(typeof value === 'number' ? value : value[0])
}
value={value}
min={0}
max={max}
step={step}
dataCy={`${dataCy}Slider`}
visibleTooltip={visibleTooltip}
/>
</div>
)}
<Input
type="number"
min="0"
max={max}
value={value}
onChange={({ target: { valueAsNumber: value } }) =>
onChange(Number.isNaN(value) ? 0 : value)
}
className="w-32"
data-cy={`${dataCy}Input`}
/>
</div>
);
}