Remove unsupported ZoomLevelChanged from DxPdfViewer

Removed the `ZoomLevelChanged` parameter from the `DxPdfViewer`
component in `EnvelopeReceiverPage.razor` due to lack of support
in the installed `DevExpress.Blazor.PdfViewer` package version
`25.2.3`. This prevents runtime exceptions caused by the use of
an unsupported parameter.

Deleted the `OnViewerZoomLevelChanged` method, as it is no longer
needed. Updated `RECEIVER_PDF_VIEWER_CONTEXT.md` to reflect the
limitations of the installed package and adjusted the recovery
plan to bind zoom state directly to `DxPdfViewer.ZoomLevel`.

Simplified zoom handling by removing custom JavaScript logic for
`ctrl+wheel` zoom and retaining the overlay redraw pipeline.
Confirmed that the built-in DevExpress zoom UI now works without
runtime errors, and custom zoom duplication has been eliminated.
This commit is contained in:
2026-06-29 14:09:14 +02:00
parent 03367ebc4a
commit a10ee590c9
2 changed files with 8 additions and 26 deletions

View File

@@ -334,7 +334,6 @@
CssClass="envelope-dx-pdf-viewer"
DocumentContent="@_pdfDocumentContent"
ZoomLevel="@_viewerZoomLevel"
ZoomLevelChanged="OnViewerZoomLevelChanged"
IsSinglePagePreview="true" />
}
<div id="pdf-signature-layer" class="pdf-signature-layer pdf-signature-layer--dx"></div>
@@ -749,21 +748,6 @@
await SetZoom(requestedZoom);
}
async Task OnViewerZoomLevelChanged(double newZoomLevel)
{
_viewerZoomLevel = newZoomLevel;
if (newZoomLevel > 0)
{
_currentZoom = (int)Math.Round(newZoomLevel * 100, MidpointRounding.AwayFromZero);
}
await JSRuntime.InvokeVoidAsync("pdfViewer.setViewState", _currentPage, _currentZoom);
await Task.Delay(150);
await RenderSignatureButtonsAsync();
await InvokeAsync(StateHasChanged);
}
async Task NextPage()
{
if (_currentPage >= _totalPages)

View File

@@ -941,13 +941,12 @@ That is the safest first vertical slice because:
### 9. Verified DevExpress API findings and current progress
The following points are now verified from DevExpress documentation for `DxPdfViewer`:
The following points are now verified for the currently installed `DevExpress.Blazor.PdfViewer` package version `25.2.3`:
- `ZoomLevel` is a real component parameter
- positive `ZoomLevel` values are interpreted as percentages
- `ZoomLevelChanged` is supported and should be used to synchronize viewer zoom with page state
- `CustomizeToolbar` can clear all built-in toolbar items through `ToolbarModel.AllItems.Clear()`
- normal positive zoom values used in this receiver page must be treated as factors in the live UI flow here (`1.5` = `150%`)
- `ActivePageIndex` is read-only information and is not a page-navigation parameter
- `ZoomLevelChanged` must not be used in this workspace because the current installed component surface does not expose a matching incoming parameter on `DxPdfViewer`
### 10. Recovery progress update
@@ -955,16 +954,15 @@ The first functional recovery step is zoom restoration.
Implemented direction:
- bind custom receiver toolbar zoom controls to `DxPdfViewer.ZoomLevel`
- synchronize zoom changes back into `_currentZoom` through `ZoomLevelChanged`
- bind receiver zoom state to `DxPdfViewer.ZoomLevel`
- remove competing custom JS ctrl+wheel zoom logic
- keep overlay redraw pipeline after confirmed zoom changes
- keep overlay redraw pipeline in place
- avoid `ZoomLevelChanged` usage because it is not available on the installed `25.2.3` `DxPdfViewer` surface
Expected outcome after this step:
- toolbar zoom buttons visibly affect the DevExpress viewer
- zoom slider visibly affects the DevExpress viewer
- overlay refresh is triggered from real viewer zoom state instead of guessed zoom state
- built-in DevExpress zoom UI can be used without the runtime parameter exception
- custom zoom duplication is removed
### 11. Additional findings after first zoom integration attempt