diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor index 78227ff6..d5aaeb3a 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/EnvelopeSenderPage.razor @@ -91,6 +91,14 @@ } + + + + + + Vorschau + + @if (_isLoggingOut) { @@ -180,7 +188,8 @@ PagerVisible="true" SelectionMode="GridSelectionMode.Single" SelectedDataItem="@_selectedEnvelope" - SelectedDataItemChanged="@OnSelectedEnvelopeChanged" + RowClick="OnRowClick" + RowDoubleClick="OnRowDoubleClick" CustomizeElement="OnCustomizeElement" LayoutAutoLoading="OnActiveGridLayoutAutoLoading" LayoutAutoSaving="OnActiveGridLayoutAutoSaving"> @@ -298,7 +307,8 @@ PagerVisible="true" SelectionMode="GridSelectionMode.Single" SelectedDataItem="@_selectedEnvelope" - SelectedDataItemChanged="@OnSelectedEnvelopeChanged" + RowClick="OnRowClick" + RowDoubleClick="OnRowDoubleClick" CustomizeElement="OnCustomizeElement" LayoutAutoLoading="OnCompletedGridLayoutAutoLoading" LayoutAutoSaving="OnCompletedGridLayoutAutoSaving"> @@ -412,6 +422,26 @@ +@* ── PDF Vorschau Popup ────────────────────────────────────────────────── *@ + + + + Umschlag-ID: @_selectedEnvelope?.Id + Titel: @_selectedEnvelope?.Title + + + + + + + @code { private IEnumerable? _allEnvelopes; private IEnumerable? _activeEnvelopes; @@ -428,6 +458,9 @@ private EnvelopeGenerator.Server.Client.Services.CustomImageDto? _appLogo; private EnvelopeGenerator.Server.Client.Services.CustomImageDto? _companyLogo; + // Preview popup + private bool _previewVisible = false; + // Stable keys used to store/restore each grid's layout in UserPreferences.GridLayouts private const string GridKeyActive = "sender.active-envelopes"; private const string GridKeyCompleted = "sender.completed-envelopes"; @@ -540,9 +573,39 @@ // Future: Add custom row coloring based on status if needed } - void OnSelectedEnvelopeChanged(object envelope) + // Single click: select row, or deselect if already selected (toggle) + void OnRowClick(GridRowClickEventArgs e) { - _selectedEnvelope = envelope as EnvelopeDto; + var clicked = e.Grid.GetDataItem(e.VisibleIndex) as EnvelopeDto; + if (clicked == null) return; + + if (_selectedEnvelope?.Id == clicked.Id) + { + // Already selected → deselect + _selectedEnvelope = null; + e.Grid.DeselectDataItem(clicked); + } + else + { + // New row → select + _selectedEnvelope = clicked; + e.Grid.SelectDataItem(clicked); + } + } + + // Double-click: select the row and open preview popup + void OnRowDoubleClick(GridRowClickEventArgs e) + { + var clicked = e.Grid.GetDataItem(e.VisibleIndex) as EnvelopeDto; + if (clicked == null) return; + _selectedEnvelope = clicked; + _previewVisible = true; + } + + void ShowPreview() + { + if (_selectedEnvelope == null) return; + _previewVisible = true; } // ── Grid Layout Persistence ───────────────────────────────────────────────
Umschlag-ID: @_selectedEnvelope?.Id
Titel: @_selectedEnvelope?.Title