Files
SteUP_Dotnet/SteUp.Shared/Components/SingleElements/Card/ShopCard.razor
T
MarcoE 4e61dc011f Rivedi la scelta del punto vendita
La schermata era dichiarata a tutto schermo ma usciva dentro un riquadro con lo
sfondo visibile ai lati: la misura da dialog di conferma si applicava anche ai
dialog FullScreen, perche' nulla la escludeva. Ora le schermate a tutto schermo
riempiono il display.

Ogni punto vendita era un <div> con role="button": adesso e' un bottone vero,
raggiungibile da tastiera e annunciato per quello che e', con il chevron che
dice che porta altrove. L'indirizzo si ferma a due righe: serve a distinguere
due negozi con lo stesso nome, non a essere letto per intero, e teneva l'elenco
lungo da scorrere.

I punti vendita su cui c'e' gia' un'ispezione aperta oggi lo dichiarano: quel
tocco riapre l'ispezione esistente invece di crearne una nuova, ed e' meglio
saperlo prima.

(Il CSS della riga e' entrato nel commit precedente, adiacente a quello delle
azioni di testata.)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 12:47:36 +02:00

75 lines
2.6 KiB
Plaintext

@using SteUp.Shared.Core.Dto
@using SteUp.Shared.Core.Helpers
@using SteUp.Shared.Core.Interface.LocalDb
@inject IIspezioniService IspezioniService
@*
Riga di scelta di un punto vendita. E' un <button>: si raggiunge da
tastiera, il lettore di schermo la annuncia per quello che e', e il tocco
si comporta come quello nativo. Il chevron dice che porta altrove.
*@
<button type="button" class="list-card shop-card panel--tappable" @onclick="StartInspection"
aria-label="@AriaLabel">
<span class="shop-card__text">
<span class="t-ident">@PuntoVendita.CodMdep</span>
<span class="list-card__title">@PuntoVendita.Descrizione</span>
@if (!Luogo.IsNullOrEmpty())
{
<span class="list-card__meta">@Luogo</span>
}
@if (Aperta)
{
@* Toccando si riapre l'ispezione di oggi invece di crearne una
nuova: meglio dirlo prima del tocco. *@
<span class="list-card__badges badge-row">
<Badge Spec="@ApertaBadge"/>
</span>
}
</span>
<i class="shop-card__chevron ri-arrow-right-s-line" aria-hidden="true"></i>
</button>
@code {
[Parameter] public PuntoVenditaDto PuntoVendita { get; set; } = null!;
[Parameter] public EventCallback OnStarting { get; set; }
/// Vero se il rilevatore ha gia' un'ispezione aperta oggi su questo punto vendita.
[Parameter] public bool Aperta { get; set; }
private static readonly StatusBadgeHelper.BadgeSpec ApertaBadge =
new("info", "ri-play-circle-line", "Ispezione di oggi");
// Indirizzo, citta', CAP e provincia su una riga sola con separatore " · ":
// sono metadati, non meritano tre chip che fanno rumore.
private string Luogo => string.Join(" · ", new[]
{
PuntoVendita.Indirizzo,
PuntoVendita.Citta,
string.Join(" ", new[] { PuntoVendita.Cap, PuntoVendita.Provincia }
.Where(x => !x.IsNullOrEmpty()))
}
.Where(x => !x.IsNullOrEmpty()));
private string AriaLabel => Aperta
? $"Riprendi l'ispezione di oggi su {PuntoVendita.CodMdep} {PuntoVendita.Descrizione}"
: $"Apri ispezione su {PuntoVendita.CodMdep} {PuntoVendita.Descrizione}";
private async Task StartInspection()
{
await OnStarting.InvokeAsync();
SteupDataService.InspectionPageState.Ispezione = await IspezioniService.GetOrCreateIspezioneAsync(
PuntoVendita.CodMdep!,
DateTime.Now,
UserSession.User.Username
);
NavigationManager.NavigateTo("/ispezione");
}
}