2e3a318132
Il "+" stava incastrato a destra nella barra di navigazione, che per il resto contiene destinazioni. Cambiava significato da una schermata all'altra senza mai dichiararlo, e su Ispezioni apriva un menu per far scegliere fra una cosa sola. Il documento di stile esclude esplicitamente il FAB di serie, e la barra torna a contenere solo le due destinazioni. Su Ispezioni l'azione e' un bottone con il suo nome nella testata, e porta dritta alla scelta del punto vendita senza passaggi intermedi. Lo stato vuoto offre lo stesso comando invece di spiegare dove trovarlo. Su Ispezione le azioni sono tre e con pesi diversi: restano in un bottom sheet, aperto dalla testata. Eliminare un'ispezione ora chiede conferma — prima un tocco cancellava ispezione e schede senza appello. Le azioni vivono nella pagina che le esegue, quindi i messaggi che le rimbalzavano dalla barra (NewSchedaService, CompleteInspectionService) non hanno piu' mittente e se ne vanno. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
57 lines
2.1 KiB
Plaintext
57 lines
2.1 KiB
Plaintext
@implements IDisposable
|
|
|
|
@*
|
|
Navigazione flottante in basso (STILE_UI §6.15): il contenuto le scorre
|
|
sotto, le destinazioni restano a portata di pollice. Icona outline a
|
|
riposo, piena da selezionata, etichetta sempre visibile in entrambe.
|
|
Da 720px diventa una colonna laterale (vedi components.css).
|
|
|
|
Qui stanno SOLO le destinazioni. Le azioni di una schermata appartengono
|
|
alla schermata, e si trovano nella sua testata: un "+" incastrato nella
|
|
barra non dice cosa crea, e cambia significato da una pagina all'altra.
|
|
*@
|
|
|
|
<nav class="navbar @(IsVisible ? "" : "navbar--hidden")" aria-label="Navigazione principale">
|
|
<NavLink class="navbar__item pressable" href="ispezioni" Match="NavLinkMatch.All">
|
|
<span class="navbar__icon">
|
|
<i class="@(IsOn("ispezioni") ? "ri-file-list-3-fill" : "ri-file-list-3-line")" aria-hidden="true"></i>
|
|
</span>
|
|
<span class="navbar__label">Ispezioni</span>
|
|
</NavLink>
|
|
|
|
<NavLink class="navbar__item pressable" href="user" Match="NavLinkMatch.All">
|
|
<span class="navbar__icon">
|
|
<i class="@(IsOn("user") ? "ri-user-fill" : "ri-user-line")" aria-hidden="true"></i>
|
|
</span>
|
|
<span class="navbar__label">Profilo</span>
|
|
</NavLink>
|
|
</nav>
|
|
|
|
@code
|
|
{
|
|
private bool IsVisible { get; set; } = true;
|
|
|
|
private static readonly string[] NavigableRoutes = ["ispezioni", "ispezione", "user"];
|
|
|
|
private string CurrentRoute =>
|
|
NavigationManager.Uri.Remove(0, NavigationManager.BaseUri.Length).Split('?')[0];
|
|
|
|
private bool IsOn(string route) => CurrentRoute.EqualsIgnoreCase(route);
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
NavigationManager.LocationChanged += OnLocationChanged;
|
|
Refresh();
|
|
}
|
|
|
|
private void OnLocationChanged(object? sender, LocationChangedEventArgs args) => Refresh();
|
|
|
|
private void Refresh()
|
|
{
|
|
IsVisible = NavigableRoutes.Contains(CurrentRoute, StringComparer.OrdinalIgnoreCase);
|
|
StateHasChanged();
|
|
}
|
|
|
|
public void Dispose() => NavigationManager.LocationChanged -= OnLocationChanged;
|
|
}
|