import React, { InputHTMLAttributes, ChangeEvent, MouseEvent, forwardRef } from 'react';
import { calculateTrackPosition } from './helpers';
import { Button, Icon, Input, Wrapper } from './styles';
import { faMinus, faPlus } from '@fortawesome/free-solid-svg-icons';
export interface InputRange extends Omit, 'defaultValue' | 'onChange'> {
value: number;
onChange: (value: number) => void;
id?: string;
min?: number;
max?: number;
step?: number;
controls?: boolean;
}
const InputRange = forwardRef(
({ min = 0, max = 100, step = 1, controls = false, value, onChange, id, ...otherProps }, ref) => {
const onChangeHandler = (e: ChangeEvent) => {
onChange(Number(e.target.value));
};
const decrement = (e: MouseEvent) => {
e.preventDefault();
onChange(value - step);
};
const increment = (e: MouseEvent) => {
e.preventDefault();
onChange(value + step);
};
if (!id) {
console.warn('Id is a required prop of the inputRange component');
}
return (
{controls && (
)}
{controls && (
)}
);
},
);
export default InputRange;