import { useRef, useEffect } from "react"; import RangeSlider from "react-range-slider-input"; import { NumericFormat } from "react-number-format"; import "./multiRangeSlider.css"; import { IMultirangeSlider } from "../types/multirangeSlider"; interface MultiRangeSliderProps { onChange: (sliderId: string, e: [a: number, b: number]) => void; multirangeSlider: IMultirangeSlider; } const MultiRangeSlider = ({ onChange, multirangeSlider, }: MultiRangeSliderProps) => { const firstInputRef = useRef(null); const secondInputRef = useRef(null); const handleOnRangeInputChange = (e: [a: number, b: number]) => { onChange(multirangeSlider.id, e); }; const handleOnFirstInputChange = (e: React.ChangeEvent) => { const value = Number(e.target.value.split(",").join("")); if ( value >= multirangeSlider.minValue && value <= multirangeSlider.maxValue ) { const rangeValue: [a: number, b: number] = [ value, multirangeSlider.endValue, ]; onChange(multirangeSlider.id, rangeValue); } }; const handleOnSecondInputChange = ( e: React.ChangeEvent ) => { const value = Number(e.target.value.split(",").join("")); if ( value >= multirangeSlider.minValue && value <= multirangeSlider.maxValue ) { const rangeValue: [a: number, b: number] = [ multirangeSlider.startValue, value, ]; onChange(multirangeSlider.id, rangeValue); } }; useEffect(() => { if ( !firstInputRef.current || multirangeSlider.startValue === multirangeSlider.minValue ) return; (firstInputRef.current as HTMLInputElement).focus(); }, [multirangeSlider.startValue]); useEffect(() => { if ( !secondInputRef.current || multirangeSlider.maxValue === multirangeSlider.endValue ) return; (secondInputRef.current as HTMLInputElement).focus(); }, [multirangeSlider.endValue]); return (
{/* */} {/* */}
); }; export default MultiRangeSlider;