From 83f3a7aaf90aac8bc183c01cd2e4ba3b8bd54023 Mon Sep 17 00:00:00 2001 From: Will Lin Date: Fri, 13 Aug 2021 11:48:01 -0400 Subject: [PATCH 1/5] Working filters, but validation doesn't show error message. --- backend/core/src/listings/dto/listing.dto.ts | 10 ++++- backend/core/types/src/backend-swagger.ts | 3 ++ sites/public/pages/listings.tsx | 44 +++++++++++++++----- ui-components/src/locales/general.json | 5 ++- 4 files changed, 49 insertions(+), 13 deletions(-) diff --git a/backend/core/src/listings/dto/listing.dto.ts b/backend/core/src/listings/dto/listing.dto.ts index 96d6171e96..30ab9483d6 100644 --- a/backend/core/src/listings/dto/listing.dto.ts +++ b/backend/core/src/listings/dto/listing.dto.ts @@ -775,7 +775,15 @@ export class ListingFilterParams extends BaseFilter { required: false, }) @IsNumberString({}, { groups: [ValidationsGroupsEnum.default] }) - [ListingFilterKeys.bedrooms]?: number + [ListingFilterKeys.bedrooms]?: number; + + @Expose() + @ApiProperty({ + type: String, + example: "48211", + required: false, + }) + [ListingFilterKeys.zipcode]?: string } export class ListingsQueryParams extends PaginationAllowsAllQueryParams { diff --git a/backend/core/types/src/backend-swagger.ts b/backend/core/types/src/backend-swagger.ts index 7be5b320a2..00f4940338 100644 --- a/backend/core/types/src/backend-swagger.ts +++ b/backend/core/types/src/backend-swagger.ts @@ -3655,6 +3655,9 @@ export interface ListingFilterParams { /** */ bedrooms?: number + + /** */ + zipcode?: string } export interface PreferenceLink { diff --git a/sites/public/pages/listings.tsx b/sites/public/pages/listings.tsx index a8651e195d..01770292e0 100644 --- a/sites/public/pages/listings.tsx +++ b/sites/public/pages/listings.tsx @@ -14,8 +14,9 @@ import { encodeToFrontendFilterString, decodeFiltersFromFrontendUrl, LinkButton, + Field, } from "@bloom-housing/ui-components" -import { useForm } from "react-hook-form" +import { FieldErrors, useForm } from "react-hook-form" import Layout from "../layouts/application" import { MetaTags } from "../src/MetaTags" import React, { useEffect, useState } from "react" @@ -83,8 +84,14 @@ const ListingsPage = () => { /* Form Handler */ // eslint-disable-next-line @typescript-eslint/unbound-method - const { handleSubmit, register } = useForm() + const { + handleSubmit, + register, + formState: { errors }, + } = useForm() const onSubmit = (data: ListingFilterParams) => { + console.log(data) + console.log(errors) setFilterModalVisible(false) setQueryString(/*page=*/ 1, data) } @@ -114,6 +121,30 @@ const ListingsPage = () => { options={preferredUnitOptions} defaultValue={filterState?.bedrooms?.toString()} /> + + { controlClassName="control" options={communityOptions} /> -