import { Autocomplete, Box, Divider, Grid, InputLabel, MenuItem, Paper, Rating, Select, SelectChangeEvent, Switch, TextField, ToggleButton, Typography } from "@mui/material"; import getCities from "../functions/getCities"; import FilterState from "../models/filterState"; import { useEffect, useState } from "react"; import NumberField from "./numberField"; import getRatingsProviders from "../functions/getRatingsProviders"; import capitaliseFirstLetter from "../functions/capitaliseFirstLetter"; interface SidebarProps { filters : FilterState; onChange : (filters : FilterState) => void; } export default function Sidebar(props : SidebarProps) { const [cities, setCities] = useState([]); const [ratingsProviders, setRatingsProviders] = useState(['Solicitors.com']); useEffect(() => { if (cities.length === 0) { getCities().then((results) => setCities(results)); } }, [cities.length]); useEffect(() => { if (cities.length === 0) { getRatingsProviders().then((results) => setRatingsProviders(results)); } }, [cities.length]); return ( Filter Conveyancers Firm Name props.onChange(Object.assign({}, {...props.filters}, {namePart: (e.target as any).value}))} /> Search by Firm Name Only props.onChange(Object.assign({}, {...props.filters}, {nameOnly: value}))} /> {!props.filters.nameOnly && <> Cities props.onChange(Object.assign({}, {...props.filters}, {cities: value}))} renderInput={(params) => ( )} /> Min. Rating props.onChange(Object.assign({}, {...props.filters}, {minRating: value}))} /> Rating Provider } Results per Page props.onChange(Object.assign({}, {...props.filters}, {resultsPerPage: value, currentPage: 1}))} min={10} max={40} /> Sort By ) } const sortingOptions = [ { value: 'RatingDescending', name: 'Rating (descending)' }, { value: 'RatingAscending', name: 'Rating (ascending)' }, { value: 'AlphabetAscending', name: 'Alphabetical (ascending)' }, { value: 'AlphabetDescending', name: 'Alphabetical (descending)' } ]