diff --git a/app/listings/constants.ts b/app/listings/constants.ts index fa417d0e..732d4b76 100644 --- a/app/listings/constants.ts +++ b/app/listings/constants.ts @@ -1,4 +1,4 @@ -export const LISTINGS_PER_PAGE = 5; +export const LISTINGS_PER_PAGE = 15; export const STARTING_PAGE = 1; export const PRICE_MIN_FILTER = 0; diff --git a/app/listings/filter-beds-baths.tsx b/app/listings/filter-beds-baths.tsx index affe9557..e0fce003 100644 --- a/app/listings/filter-beds-baths.tsx +++ b/app/listings/filter-beds-baths.tsx @@ -9,10 +9,12 @@ import { BEDS_BATHS_DEFAULT, BEDS_BATHS_FILTER } from "./constants" import { ListingsContext } from "./provider" export default function ListingsFiltersBedsBaths() { - const [beds, setBeds] = useState(BEDS_BATHS_DEFAULT) - const [baths, setBaths] = useState(BEDS_BATHS_DEFAULT) - const context = useContext(ListingsContext) + + // TODO: (Beds/baths filter) Make sure values are the same + const [beds, setBeds] = useState(context.searchFilters.beds.value) + const [baths, setBaths] = useState(context.searchFilters.baths.value) + const [displayDropdown, setDisplayDropdown] = useState(false) return ( diff --git a/app/listings/filter-price.tsx b/app/listings/filter-price.tsx index 875d4c1a..27ee0260 100644 --- a/app/listings/filter-price.tsx +++ b/app/listings/filter-price.tsx @@ -13,11 +13,13 @@ import { PRICE_MAX_FILTER, PRICE_MIN_FILTER } from "./constants" import { ListingsContext } from "./provider" export default function ListingsFilterPrice() { - const minPricePlaceholder = "None" const maxPricePlaceholder = CURRENCY_FORMATTER.format(PRICE_MAX_FILTER) - const [minPrice, setMinPrice] = useState(PRICE_MIN_FILTER) - const [maxPrice, setMaxPrice] = useState(PRICE_MAX_FILTER) + const context = useContext(ListingsContext) + + // TODO: (Price filter) Make sure values are the same + const [minPrice, setMinPrice] = useState(context.searchFilters.price.min.value) + const [maxPrice, setMaxPrice] = useState(context.searchFilters.price.max.value) const [minPriceError, setMinPriceError] = useState(undefined) const [maxPriceError, setMaxPriceError] = useState(undefined) @@ -26,7 +28,6 @@ export default function ListingsFilterPrice() { const [minPriceValidator, setMinPriceValidator] = useState(defaultValidator) const [maxPriceValidator, setMaxPriceValidator] = useState(defaultValidator) - const context = useContext(ListingsContext) const [displayDropdown, setDisplayDropdown] = useState(false) return ( @@ -42,7 +43,7 @@ export default function ListingsFilterPrice() { (AREA_MIN_FILTER) - const [maxArea, setMaxArea] = useState(AREA_MAX_FILTER) + const context = useContext(ListingsContext) + + // TODO: (Area filter) Make sure values are the same + const [minArea, setMinArea] = useState(context.searchFilters.area.min.value) + const [maxArea, setMaxArea] = useState(context.searchFilters.area.max.value) const [minAreaError, setMinAreaError] = useState(undefined) const [maxAreaError, setMaxAreaError] = useState(undefined) @@ -25,7 +28,6 @@ export default function ListingsFilterArea() { const [minAreaValidator, setMinAreaValidator] = useState(defaultValidator) const [maxAreaValidator, setMaxAreaValidator] = useState(defaultValidator) - const context = useContext(ListingsContext) const [displayDropdown, setDisplayDropdown] = useState(false) return ( @@ -52,7 +54,6 @@ export default function ListingsFilterArea() { if (result.success) { setMinAreaError(undefined) - // Only change value if validation is successful setMaxAreaValidator(customizeAreaValidator(value, AREA_MAX_FILTER)) setMinArea(value) } else { @@ -74,7 +75,6 @@ export default function ListingsFilterArea() { if (result.success) { setMaxAreaError(undefined) - // Only change value if validation is successful setMinAreaValidator(customizeAreaValidator(AREA_MIN_FILTER, value)) setMaxArea(value) } else { diff --git a/app/listings/search-filters-modal-content.tsx b/app/listings/search-filters-modal-content.tsx index 302a2160..afc187d6 100644 --- a/app/listings/search-filters-modal-content.tsx +++ b/app/listings/search-filters-modal-content.tsx @@ -1,29 +1,48 @@ +import ButtonsSegmentedLabelled from "@/components/buttons-segmented/labelled"; import ButtonFilled from "@/components/buttons/filled"; +import FormInput from "@/components/form-input"; import FormInputReset from "@/components/form-input/reset"; -import ListingsFiltersBedsBaths from "./filter-beds-baths"; -import ListingsFilterPrice from "./filter-price"; -import ListingsFilterArea from "./filters-area"; +import { BEDS_BATHS_FILTER } from "./constants"; export default function ListingsSearchFiltersModalContent() { - // TODO: Fix display of search filters + // TODO: Add input actions return ( -
-
- Filters -
- {/* Price */} -
- +
+
+
+ Filters +
+ {/* Price */} + {/* TODO: (Price filter) Make sure values are the same */} +
+ + +
+ {/* TODO: (Beds/baths filter) Make sure values are the same */} +
+ + +
+ {/* Area */} + {/* TODO: (Area filter) Make sure values are the same */} +
+ + +
- {/* Beds/Baths */} -
- -
- {/* Area */} -
- -
- {/* Reset and Search buttons */} + {/* TODO: Reset and Search buttons */}
diff --git a/lib/validation/listing/validators.ts b/lib/validation/listing/validators.ts index 49f748ab..c4be1b99 100644 --- a/lib/validation/listing/validators.ts +++ b/lib/validation/listing/validators.ts @@ -1,6 +1,6 @@ -import { NUMBER_FORMATTER } from "@/lib/formatter/number"; import { z } from "zod"; import { CURRENCY_FORMATTER } from "../../formatter/currency"; +import { NUMBER_FORMATTER } from "../../formatter/number"; // Price const PRICE_MIN = Number(process.env.LISTING_PRICE_MIN ?? 100);