From c875ad5db85079ce3ef390360052f63ea6b65d7f Mon Sep 17 00:00:00 2001 From: Davide Bizzi Date: Mon, 16 Jun 2025 12:12:28 +0200 Subject: [PATCH] fix: Update city selection logic to handle administrative area level for Italian cities --- src/features/CitySelect.tsx | 5 ++++- .../SelectionFormFields/AddressFields.tsx | 16 +++++++++++----- src/pages/Profile/TabBase/index.tsx | 10 ++++++++-- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/features/CitySelect.tsx b/src/features/CitySelect.tsx index 06958a7bd..5d8a1b936 100644 --- a/src/features/CitySelect.tsx +++ b/src/features/CitySelect.tsx @@ -50,7 +50,10 @@ const CitySelect = ({ noOptionsMessage: () => t("Type to search your city"), }, autocompletionRequest: { - types: ["(cities)"], + types: + countryRestrictions === "IT" + ? ["administrative_area_level_3"] + : ["(cities)"], componentRestrictions: { country: countryRestrictions || "" }, }, }} diff --git a/src/pages/PreviewSelectionForm/SelectionForm/SelectionFormFields/AddressFields.tsx b/src/pages/PreviewSelectionForm/SelectionForm/SelectionFormFields/AddressFields.tsx index 3690d157c..3402fe618 100644 --- a/src/pages/PreviewSelectionForm/SelectionForm/SelectionFormFields/AddressFields.tsx +++ b/src/pages/PreviewSelectionForm/SelectionForm/SelectionFormFields/AddressFields.tsx @@ -4,10 +4,10 @@ import { SelectType, } from "@appquality/appquality-design-system"; import { FieldProps } from "formik"; -import CountrySelect from "src/features/CountrySelect"; -import CitySelect from "src/features/CitySelect"; -import { useTranslation } from "react-i18next"; import { useState } from "react"; +import { useTranslation } from "react-i18next"; +import CitySelect from "src/features/CitySelect"; +import CountrySelect from "src/features/CountrySelect"; interface AddressFieldsProps { label: string; @@ -70,9 +70,15 @@ export const AddressFields = ({ return; } const fields = place.address_components; - const city = fields.find( - (field) => field.types.indexOf("locality") >= 0 + let city = fields.find( + (field) => + field.types.indexOf("administrative_area_level_3") >= 0 ); + if (!city) { + city = fields.find( + (field) => field.types.indexOf("locality") >= 0 + ); + } if (!city) { form.setFieldError( cityField, diff --git a/src/pages/Profile/TabBase/index.tsx b/src/pages/Profile/TabBase/index.tsx index 62429ff5a..cb0b90c62 100644 --- a/src/pages/Profile/TabBase/index.tsx +++ b/src/pages/Profile/TabBase/index.tsx @@ -338,9 +338,15 @@ const TabBase = () => { return; } const fields = place.address_components; - const city = fields.find( - (field) => field.types.indexOf("locality") >= 0 + let city = fields.find( + (field) => + field.types.indexOf("administrative_area_level_3") >= 0 ); + if (!city) { + city = fields.find( + (field) => field.types.indexOf("locality") >= 0 + ); + } if (!city) { formikProps.setFieldError( "city",