diff --git a/salesbook.Shared/Components/Layout/HeaderLayout.razor.css b/salesbook.Shared/Components/Layout/HeaderLayout.razor.css
index 146d09f..82cd2a6 100644
--- a/salesbook.Shared/Components/Layout/HeaderLayout.razor.css
+++ b/salesbook.Shared/Components/Layout/HeaderLayout.razor.css
@@ -1,4 +1,12 @@
+.header {
+ min-height: var(--mh-header);
+ width: 100%;
+ display: flex;
+ align-items: center;
+}
+
.header-content {
+ width: 100%;
line-height: normal;
display: flex;
justify-content: space-between;
diff --git a/salesbook.Shared/Components/SingleElements/BottomSheet/SearchAddress.razor b/salesbook.Shared/Components/SingleElements/BottomSheet/SearchAddress.razor
new file mode 100644
index 0000000..9ec722a
--- /dev/null
+++ b/salesbook.Shared/Components/SingleElements/BottomSheet/SearchAddress.razor
@@ -0,0 +1,124 @@
+@using salesbook.Shared.Components.Layout.Spinner
+@using salesbook.Shared.Core.Dto
+@using salesbook.Shared.Core.Interface
+@using salesbook.Shared.Components.Layout.Overlay
+@inject IIntegryApiService IntegryApiService
+
+
+
+
+
+
+
+ Cerca indirizzo
+
+
+
+
+
+
+
+
+
+
+
+ @if (Loading)
+ {
+
+ }
+ else
+ {
+ if (Addresses != null)
+ {
+ foreach (var address in Addresses)
+ {
+
OnSelectAddress(address.PlaceId)">@address.Description
+
+
+ }
+ }
+ else
+ {
+
+ }
+ }
+
+
+
+
+
+
+@code {
+ [Parameter] public string Region { get; set; }
+
+ [Parameter] public IndirizzoDTO Indirizzo { get; set; }
+ [Parameter] public EventCallback IndirizzoChanged { get; set; }
+
+ [Parameter] public bool IsSheetVisible { get; set; }
+ [Parameter] public EventCallback IsSheetVisibleChanged { get; set; }
+
+ private bool Loading { get; set; }
+
+ private string? Address { get; set; }
+ private List? Addresses { get; set; }
+
+ private string? Uuid { get; set; }
+
+ //Overlay for save
+ private bool VisibleOverlay { get; set; }
+ private bool SuccessAnimation { get; set; }
+
+ protected override async Task OnParametersSetAsync()
+ {
+ if (IsSheetVisible)
+ {
+ Uuid = Guid.NewGuid().ToString();
+ Address = null;
+ Addresses = null;
+ }
+ }
+
+ private void CloseBottomSheet()
+ {
+ IsSheetVisible = false;
+ IsSheetVisibleChanged.InvokeAsync(IsSheetVisible);
+ }
+
+ private async Task SearchAllAddress()
+ {
+ if (Address == null || Uuid == null) return;
+
+ Loading = true;
+ StateHasChanged();
+
+ Addresses = await IntegryApiService.AutoCompleteAddress(Address, Region, Uuid);
+
+ Loading = false;
+ StateHasChanged();
+ }
+
+ private async Task OnSelectAddress(string placeId)
+ {
+ CloseBottomSheet();
+
+ VisibleOverlay = true;
+ StateHasChanged();
+
+ try
+ {
+ Indirizzo = await IntegryApiService.PlaceDetails(placeId, Uuid);
+ await IndirizzoChanged.InvokeAsync(Indirizzo);
+ }
+ catch (Exception e)
+ {
+ Snackbar.Configuration.PositionClass = Defaults.Classes.Position.TopCenter;
+ Snackbar.Clear();
+
+ Snackbar.Add("Impossibile selezionare questo indirizzo", Severity.Error);
+ }
+
+ VisibleOverlay = false;
+ StateHasChanged();
+ }
+
+}
\ No newline at end of file
diff --git a/salesbook.Shared/Components/SingleElements/BottomSheet/SearchAddress.razor.css b/salesbook.Shared/Components/SingleElements/BottomSheet/SearchAddress.razor.css
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/salesbook.Shared/Components/SingleElements/BottomSheet/SearchAddress.razor.css
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor b/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor
index be17acc..380b8a6 100644
--- a/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor
+++ b/salesbook.Shared/Components/SingleElements/Modal/ContactForm.razor
@@ -3,6 +3,7 @@
@using salesbook.Shared.Core.Interface
@using salesbook.Shared.Components.Layout.Overlay
@using salesbook.Shared.Core.Entity
+@using salesbook.Shared.Components.SingleElements.BottomSheet
@inject IManageDataService ManageData
@inject INetworkService NetworkService
@inject IIntegryApiService IntegryApiService
@@ -13,141 +14,21 @@