From aa2a31e9935da09990f74f5ad1d6cfd3454c2ccf Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 23 Sep 2026 15:33:08 +0200 Subject: [PATCH] style: add global user-select:none and PDF preview popup styles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit app.css: Disable text/image selection globally; re-enable for input/textarea/[contenteditable] so typing and pasting still work. sender-page.css: Add .sender-preview-popup, .sender-preview-viewer-wrap and .sender-preview-pdf-viewer rules. DxPdfViewer requires an explicit pixel-height parent — percentage heights resolve to 0 inside popup body flex containers and cause DevExpress NullReferenceExceptions. --- .../wwwroot/css/app.css | 12 +++++++ .../wwwroot/css/sender-page.css | 34 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/app.css b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/app.css index f67a5d5f..36e4645a 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/app.css +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/app.css @@ -1,5 +1,17 @@ @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); +/* Disable text/image selection globally */ +* { + user-select: none; + -webkit-user-select: none; +} + +/* Re-enable for inputs where typing/pasting must work */ +input, textarea, [contenteditable] { + user-select: text; + -webkit-user-select: text; +} + html, body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 0; diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/sender-page.css b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/sender-page.css index b944e008..8d664a00 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/sender-page.css +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/wwwroot/css/sender-page.css @@ -479,3 +479,37 @@ border-color: rgba(239, 68, 68, 0.3); color: #fca5a5; } + +/* ── PDF Preview Popup ─────────────────────────────────────────────────── */ + +/* + * DxPdfViewer needs an explicit pixel-height parent — percentage heights + * resolve to 0 inside popup body flex containers and cause DevExpress + * ProcessDocumentChangedAsync NullReferenceExceptions. + * + * Strategy: + * - Popup: 80vw × 90vh + * - Body: fills remaining space between header (~52px) and footer (~58px) + * - Wrapper: flex column, explicit height = calc(90vh - 52px - 58px - 2px) + * - DxPdfViewer: flex:1, overflow handled internally by DevExpress (scroll works) + */ +.sender-preview-popup .dxbl-popup-body { + padding: 0 !important; + overflow: hidden; +} + +.sender-preview-viewer-wrap { + display: flex; + flex-direction: column; + width: 100%; + height: calc(90vh - 114px); /* 52px header + 58px footer + 4px borders */ + min-height: 480px; + overflow: hidden; /* inner DxPdfViewer manages its own scroll */ +} + +.sender-preview-pdf-viewer { + flex: 1 1 auto; + width: 100%; + height: 100%; + overflow: auto; +}