diff --git a/pages/index.tsx b/pages/index.tsx index d2ed945..00f9cc0 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,4 +1,5 @@ import { NextPage } from 'next' +import { useState, useEffect } from 'react' import Layout from '../components/layout' import useApiData from '../hooks/use-api-data' @@ -6,14 +7,50 @@ import Airport from '../types/airport' const Page: NextPage = () => { const airports = useApiData('/api/airports', []) + const [filter, setFilter] = useState('') + const [filtered, setFiltered] = useState([]) + const [validation, setValidation] = useState('') + + const changeFilter = e => { + setFilter(e.target.value) + } + + useEffect(() => { + let check = filter.toLowerCase() + + if (filter.length > 1) { + setValidation('') + setFiltered(airports.filter(airport => { + let result = airport.name.toLowerCase().includes(check) || + airport.iata.toLowerCase().includes(check) || + airport.city.toLowerCase().includes(check) || + airport.country.toLowerCase().includes(check) + + return result + })) + } else if (filter.length === 1) { + setValidation('Please type 2 or more characters.') + setFiltered([]) + } else { + setValidation('') + setFiltered([]) + } + }, [filter]) return

Code Challenge: Airports

All Airports

+
+ +

{validation}

+
+
- {airports.map(airport => ( + {filtered.map(airport => (
{airport.name}, {airport.city}