lev-stake-sol/components/shared/LeverageSlider.tsx

43 lines
896 B
TypeScript
Raw Normal View History

import usePrevious from 'hooks/usePrevious'
import { useEffect, useState } from 'react'
2023-09-22 06:33:36 -07:00
import RangeSlider from 'react-range-slider-input'
2023-09-12 17:37:41 -07:00
const LeverageSlider = ({
leverageMax,
onChange,
step,
}: {
leverageMax: number
2023-09-22 06:33:36 -07:00
onChange: (x: number) => void
2023-09-12 17:37:41 -07:00
step: number
}) => {
2023-09-22 06:33:36 -07:00
const [value, setValue] = useState([0, 1])
const prevMax = usePrevious(leverageMax)
// if leverageMax changes, force rerender
useEffect(() => {
if (prevMax !== leverageMax) {
window.dispatchEvent(new Event('resize'))
}
}, [leverageMax, prevMax])
2023-09-12 17:37:41 -07:00
2023-09-22 06:33:36 -07:00
const handleSliderChange = (v: number[]) => {
setValue(v)
onChange(v[1])
2023-09-12 17:37:41 -07:00
}
return (
<RangeSlider
id="range-slider-gradient"
onInput={handleSliderChange}
min={1}
max={leverageMax}
value={value}
step={step}
thumbsDisabled={[true, false]}
/>
2023-09-12 17:37:41 -07:00
)
}
export default LeverageSlider