diff --git a/app/component/ModalSearchCity.js b/app/component/ModalSearchCity.js new file mode 100644 index 0000000..70b40fd --- /dev/null +++ b/app/component/ModalSearchCity.js @@ -0,0 +1,150 @@ +"use client"; + +import { useState, useEffect } from "react"; +import { Box, Button, Modal } from "@mui/material"; + +// Icon +import ArrowBottomH from "@/components/icons/ArrowBottomH"; +import Location from "@/components/icons/Location"; +import { styleDefault } from "@/mui"; +import CloseModalD from "@/components/icons/CloseModalD"; +import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect"; +import ArrowLeftM from "@/components/icons/ArrowLeftM"; + +// Data +import statesData from "@/data/state.json"; +import citiesData from "@/data/city.json"; + +function ModalSearchCity() { + const [states, setStates] = useState([]); + const [cities, setCities] = useState([]); + const [filteredCities, setFilteredCities] = useState([]); + + const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + const [selected, setSelected] = useState({ + first: "", + second: "", + }); + + // Load states and cities from JSON files + useEffect(() => { + // Format states data to match the structure expected by AutoCompleteSelect + const formattedStates = statesData.map((state) => ({ + label: state.name, + id: state.id, + })); + + // Format cities data + const formattedCities = citiesData.map((city) => ({ + label: city.name, + id: city.id, + province_id: city.province_id, + })); + + setStates(formattedStates); + setCities(formattedCities); + }, []); + + // Filter cities when state is selected + useEffect(() => { + if (selected.first) { + const selectedState = states.find( + (state) => state.label === selected.first + ); + if (selectedState) { + const stateId = selectedState.id; + const filteredCities = cities.filter( + (city) => city.province_id === stateId + ); + setFilteredCities(filteredCities); + } + } else { + setFilteredCities([]); + setSelected({ ...selected, second: "" }); + } + }, [selected.first, cities, states]); + + const updateData = (event, name) => { + if (name === "first" && event !== selected.first) { + // If state changes, reset city selection + setSelected({ first: event, second: "" }); + } else { + setSelected({ ...selected, [name]: event }); + } + }; + + return ( + <> + {/* Button Modal */} + + + + + + {selected.first && selected.second + ? `${selected.first} | ${selected.second}` + : "انتخاب شهر"} + + + + + + {/* Content Modal */} + + + + + + + + + + شهر یا استان مورد نظر را انتخاب نمایید: + + + + + + + + تایید و ادامه + + + + + + + > + ); +} + +export default ModalSearchCity;
+ {selected.first && selected.second + ? `${selected.first} | ${selected.second}` + : "انتخاب شهر"} +
+ شهر یا استان مورد نظر را انتخاب نمایید: +