Il comando della barra si adatta alla schermata
Il tasto al centro perde l'etichetta: non ne ha una sola, perche' quello che fa lo decide la schermata sotto. Dentro un'ispezione apre le sue azioni (nuova scheda, concludi, elimina); altrove apre una nuova ispezione. Il glifo resta lo stesso e resta nello stesso punto: quello che cambia e' cosa c'e' dietro, non dove mettere il dito. Le azioni dell'ispezione lasciano quindi la testata, dove stavano dietro un menu a tre punti, e tornano sotto il pollice. Il collegamento passa da PageActionsService: la pagina si registra finche' e' a video e si sfila uscendo, cosi' la barra non tiene in vita schermate che non ci sono piu'. Chi non registra niente lascia al comando il suo significato di default — un'ispezione conclusa non registra, e il tasto non resta li' a non fare nulla. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,27 +13,20 @@
|
||||
@using SteUp.Shared.Core.Interface.IntegryApi
|
||||
@using SteUp.Shared.Core.Interface.LocalDb
|
||||
@using SteUp.Shared.Core.Interface.System
|
||||
@using SteUp.Shared.Core.Messages.System
|
||||
@inject IIspezioniService IspezioniService
|
||||
@inject IDialogService Dialog
|
||||
@inject IIntegrySteupService IntegrySteupService
|
||||
@inject IFileManager FileManager
|
||||
@inject ILogger<IspezionePage> Logger
|
||||
@inject PageActionsService PageActions
|
||||
@implements IDisposable
|
||||
|
||||
<HeaderLayout Title="@Titolo" Subtitle="@Sottotitolo" Back="true">
|
||||
<Actions>
|
||||
@* Su un'ispezione conclusa resta solo la consultazione: niente azioni. *@
|
||||
@if (!IsCompleted)
|
||||
{
|
||||
@* Qui le azioni sono piu' d'una e non hanno lo stesso peso: lo
|
||||
sheet le mostra con nome, icona e tono, invece di nasconderle
|
||||
tutte dietro lo stesso glifo. *@
|
||||
<button type="button" class="appbar__icon-action" @onclick="@(() => _actionsOpen = true)"
|
||||
aria-label="Azioni sull'ispezione" title="Azioni">
|
||||
<i class="ri-more-2-fill" aria-hidden="true"></i>
|
||||
</button>
|
||||
}
|
||||
</Actions>
|
||||
</HeaderLayout>
|
||||
@* Le azioni non stanno nella testata: le apre il comando al centro della
|
||||
barra in basso, che finche' questa schermata e' a video significa "azioni
|
||||
di questa ispezione" (vedi PageActionsService). Su un'ispezione conclusa
|
||||
non si registra nulla e resta solo la consultazione. *@
|
||||
<HeaderLayout Title="@Titolo" Subtitle="@Sottotitolo" Back="true"/>
|
||||
|
||||
<ActionSheet @bind-Open="_actionsOpen" Title="Azioni ispezione" Subtitle="@Ispezione.CodMdep">
|
||||
<div class="stack stack-xs">
|
||||
@@ -253,7 +246,26 @@
|
||||
|
||||
private string Sottotitolo => Ispezione.CodMdep;
|
||||
|
||||
protected override void OnInitialized() => LoadSchede();
|
||||
private IDisposable? _actionsRegistration;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
LoadSchede();
|
||||
|
||||
// Su un'ispezione conclusa non c'e' niente da fare: il comando della
|
||||
// barra si tiene il suo significato di default invece di aprire uno
|
||||
// sheet di azioni tutte spente.
|
||||
if (!IsCompleted)
|
||||
_actionsRegistration = PageActions.Register(() => InvokeAsync(OpenActions));
|
||||
}
|
||||
|
||||
private void OpenActions()
|
||||
{
|
||||
_actionsOpen = true;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
public void Dispose() => _actionsRegistration?.Dispose();
|
||||
|
||||
private void LoadSchede()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user