import React, { useState, ReactElement } from 'react'; import { Collapsible } from './Collapsible'; import classnames from 'classnames'; import './PriceFilter.scss'; export interface Props { currency: string; defaultMin: number; defaultMax: number; error: Array; handleClear: () => void; handleSubmit: (minAndMax: Array) => void; } const validateInput = (input: string): boolean => { return Boolean(input.match(/^$|^\d{1,7}$/)); }; export const PriceFilter = (props: Props): ReactElement => { const [min, setMin] = useState(props.defaultMin || ''); const [max, setMax] = useState(props.defaultMax || ''); const handleSubmit = (event: React.FormEvent): void => { event.preventDefault(); props.handleSubmit([min, max]); }; const handleMinChange = ( event: React.ChangeEvent, ): void => { const value = event.target.value; validateInput(value) && setMin(value); }; const handleMaxChange = ( event: React.ChangeEvent, ): void => { const value = event.target.value; validateInput(value) && setMax(value); }; const handlePriceClear = (): void => { setMin(''); setMax(''); props.handleSubmit(['', '']); props.handleClear(); }; return (
Price
}>
{props.error}
0, })} onSubmit={handleSubmit} > {props.currency + ' min'} to {props.currency + ' max'}