style: add global user-select:none and PDF preview popup styles

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.
This commit is contained in:
2026-09-23 15:33:08 +02:00
parent ecc509919c
commit aa2a31e993
2 changed files with 46 additions and 0 deletions

View File

@@ -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;

View File

@@ -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;
}