From 07d0bf86f00614770d91c5216a0bb69c77a56a68 Mon Sep 17 00:00:00 2001 From: OlenaIa <121794911+OlenaIa@users.noreply.github.com> Date: Sat, 2 Dec 2023 18:18:18 +0200 Subject: [PATCH] Input with Coma --- src/components/Filters/Filters.jsx | 152 +++++++++++++++-------- src/components/Filters/Filters.styled.js | 49 ++++++-- src/pages/Favorites.jsx | 32 +++-- 3 files changed, 149 insertions(+), 84 deletions(-) diff --git a/src/components/Filters/Filters.jsx b/src/components/Filters/Filters.jsx index 616873c..0ec90da 100644 --- a/src/components/Filters/Filters.jsx +++ b/src/components/Filters/Filters.jsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { selectBrand, selectCarBrands } from "redux/selectors"; -import { ButtonSearch, Form, Input, InputWrap, Label, firstSelectStyles, secondSelectStyles } from "./Filters.styled"; +import { Blink, ButtonSearch, Form, Input, InputWrap, Label, FalseInput, WrapSecondInput, firstSelectStyles, secondSelectStyles } from "./Filters.styled"; import Select from 'react-select'; import { brandSet } from "redux/filter/filterSlice"; @@ -13,30 +13,57 @@ export const Filters = () => { const [selectedPrice, setSelectedPrice] = useState(null); const [mileageFrom, setMileageFrom] = useState(''); const [mileageTo, setMileageTo] = useState(''); - + const [mileageToWithComa, setMileageToWithComa] = useState(''); + const [mileageFromWithComa, setMileageFromWithComa] = useState(''); + const pricesArray = []; for (let index = 30; index < 501; index += 10) { pricesArray.push({ value: index, label: index }); }; - // const onSubmitFilter = (event) => { - // event.preventDefault(); - // const form = event.currentTarget; - // // const searchValue = form.search.value - // console.log('form', form); - // }; + const reset = () => { + setMileageFrom(''); + setMileageTo(''); + setMileageToWithComa(''); + setMileageFromWithComa(''); + }; + + const onSubmitFilter = (event) => { + event.preventDefault(); + const form = event.currentTarget; + // const searchValue = form.search.value + console.log('form', form); + reset(); + }; + + + + const makeComaInMileage = (mileage) => { + const lengthMileage = mileage.toString().length; + + if (lengthMileage <= 3) { + return mileage; + }; + + const mileageStringArr = mileage.split(''); + mileageStringArr.splice((lengthMileage-3), 0, ','); + return mileageStringArr.join(''); + }; + const handleChange = (e) => { - console.log('e.target', e.target); const { value } = e.target; + const valueWithComa = makeComaInMileage(value); + switch (e.target.name) { case 'mileageFrom': setMileageFrom(value); - console.log('mileageFrom'); + setMileageFromWithComa(valueWithComa); break; case 'mileageTo': + setMileageTo(value); - console.log('mileageTo'); + setMileageToWithComa(valueWithComa); break; default: break; @@ -49,52 +76,67 @@ export const Filters = () => { }; return ( - <> -
- > + pattern="[0-9]{1,6}" + title="Only number. From 1 to 6 digitals" + + inputmode='numeric' + name="mileageTo" + value={mileageTo} + onChange={handleChange} + min="1" + max='999999' + $radius='0px 14px 14px 0px' + $padding='14px 14px 14px 48px'/> +- Please select your favorite cars in the Сatalog. -
-+ Please select your favorite cars in the Сatalog. +
+