import React, { useEffect } from 'react'; import styles from './Slider.module.css'; interface SliderProps { maxValue: number; value: number; setValue: (value: number | null) => void; defaultValue: 'min' | 'max'; id: string; } const Slider: React.FC = ({ maxValue, value, setValue, defaultValue, id, }) => { useEffect(() => { const slider = document.getElementById(id) as HTMLElement; const sliderValue = defaultValue === 'min' ? ((value || 0) / maxValue) * 100 : ((value === null ? maxValue : value) / maxValue) * 100; if (slider) { slider.style.setProperty(`--${id}Value`, `${sliderValue}%`); } }, [value, maxValue, defaultValue, id]); return ( { setValue( defaultValue === 'min' ? e.target.value === '0' ? null : parseInt(e.target.value) : e.target.value === maxValue.toString() ? null : parseInt(e.target.value) ); }} className={styles.slider} style={ { '--currentSliderValue': `var(--${id}Value)` } as React.CSSProperties } /> ); }; export default Slider;