import { GlobalContext } from "@/globalContext"; import { isValidDate, parseSearchParams } from "@/utils/utils"; import { Dialog, Transition } from "@headlessui/react"; import React, { Fragment, useContext } from "react"; import { useForm } from "react-hook-form"; import { useSearchParams } from "react-router-dom"; import CustomLocationAutoCompleteV2 from "./CustomLocationAutoCompleteV2"; import DatePickerV3 from "./DatePickerV3"; const prices = [ { label: "All Prices", value: "", }, { label: "$0 - $30", value: "$0 - $30", }, { label: "$31 - $60", value: "$31 - $60", }, { label: "$60 - $90", value: "$60 - $90", }, { label: "$90 - $120", value: "$90 - $120", }, { label: "$120 - $150", value: "$120 - $150", }, { label: "$150 - $180", value: "$150 - $180", }, ]; export default function PropertySpaceFiltersModal({ modalOpen, closeModal }) { const [searchParams, setSearchParams] = useSearchParams(); const { state: globalState } = useContext(GlobalContext); const { handleSubmit, register, watch, reset, setValue, control, formState, resetField } = useForm({ defaultValues: (() => { const params = parseSearchParams(searchParams); return { location: params.location ?? "", from: isValidDate(params.from ?? "") ? new Date(params.from) : new Date(), to: isValidDate(params.to ?? "") ? new Date(params.to) : new Date(), space_name: params.space_name ?? "", category: params.category ?? "", price_range: params.price_range ?? "", direction: "DESC", }; })(), }); const { dirtyFields } = formState; const fromDate = watch("from"); const onSubmit = async (data) => { console.log("submitting ", data); searchParams.set("category", data.category); searchParams.set("price_range", data.price_range); searchParams.set("space_name", data.space_name); searchParams.set("location", data.location); searchParams.set("from", dirtyFields?.from ? data.from.toISOString() : ""); searchParams.set("to", dirtyFields?.to ? data.to.toISOString() : ""); setSearchParams(searchParams); closeModal(); }; return (
Filters
{" "}

setValue("location", val)} name="location" className={`w-full rounded border py-2 px-3 leading-tight text-gray-700 focus:outline-none`} placeholder="Location" hideIcons />
resetField("from", { keepDirty: false, keepTouched: false })} setValue={(val) => setValue("from", val, { shouldDirty: true })} control={control} name="from" labelClassName="justify-between flex-grow flex-row-reverse" placeholder="From" min={new Date()} />
resetField("to", { keepDirty: false, keepTouched: false })} setValue={(val) => setValue("to", val, { shouldDirty: true })} control={control} name="to" labelClassName="justify-between flex-grow flex-row-reverse" placeholder="To" min={fromDate} />
); }