refactor(sender): overhaul PDF preview popup layout and styling
Replace inline styles and magic-number height calculations with a proper BEM CSS class system. Attach HeaderCssClass and BodyCssClass to DxPopup so DevExpress DOM targets can be styled reliably without deep selector hacks. Layout changes: - Remove hardcoded calc(90vh - 114px) height from viewer wrapper; use flex layout so the body fills available space naturally - Change overflow on DxPdfViewer wrapper from hidden to auto to allow horizontal scrolling at high zoom levels - Center PDF pages horizontally inside dxbrv-document-surface via flex New CSS classes (BEM): - .sender-preview-popup root shell, accent top border - .sender-preview-popup__header styled header via HeaderCssClass - .sender-preview-popup__body flex column body via BodyCssClass - .sender-preview-viewer-wrap padding wrapper for the PDF viewer - .sender-preview-pdf-viewer viewer shell with rounded corners / shadow - .sender-preview-state-wrap centered container for loading/error states - .sender-preview-error-card error message card with left accent border - .sender-preview-error-icon circular icon wrapper - .sender-preview-error-title/msg typography helpers Theme support: - Purple, Blazing Dark variants via data-sf-theme attribute overrides Custom scrollbars: - WebKit scrollbar styling scoped to .sender-preview-popup__body Inline style cleanup in EnvelopeSenderPage.razor: - Replace all ad-hoc style= attributes with the new CSS classes above
This commit is contained in:
@@ -441,6 +441,8 @@
|
||||
CloseOnOutsideClick="true"
|
||||
ShowFooter="false"
|
||||
CssClass="sender-preview-popup"
|
||||
HeaderCssClass="sender-preview-popup__header"
|
||||
BodyCssClass="sender-preview-popup__body"
|
||||
Closed="OnPreviewClosed"
|
||||
AllowResize="true"
|
||||
ApplyBackgroundShading="true"
|
||||
@@ -451,7 +453,7 @@
|
||||
<BodyContentTemplate>
|
||||
@if (_previewLoading)
|
||||
{
|
||||
<div style="display:flex;justify-content:center;align-items:center;height:100%;min-height:300px;">
|
||||
<div class="sender-preview-state-wrap">
|
||||
<div class="text-center">
|
||||
<div class="spinner-border mb-3" style="width:3rem;height:3rem;" role="status">
|
||||
<span class="visually-hidden">Lädt...</span>
|
||||
@@ -462,27 +464,24 @@
|
||||
}
|
||||
else if (_previewErrorMessage is not null)
|
||||
{
|
||||
<div style="display:flex;gap:1rem;align-items:flex-start;padding:1.5rem;">
|
||||
<div style="flex-shrink:0;width:40px;height:40px;border-radius:50%;
|
||||
background:#fee2e2;display:flex;align-items:center;justify-content:center;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#dc2626" viewBox="0 0 16 16">
|
||||
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z" />
|
||||
<path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z" />
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
<p style="margin:0 0 0.4rem;font-weight:600;color:#1f2937;font-size:0.95rem;">
|
||||
Dokument konnte nicht geladen werden
|
||||
</p>
|
||||
<p style="margin:0;color:#6b7280;font-size:0.85rem;line-height:1.5;word-break:break-word;">
|
||||
@_previewErrorMessage
|
||||
</p>
|
||||
<div class="sender-preview-state-wrap">
|
||||
<div class="sender-preview-error-card">
|
||||
<div class="sender-preview-error-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#dc2626" viewBox="0 0 16 16">
|
||||
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z" />
|
||||
<path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 4.995z" />
|
||||
</svg>
|
||||
</div>
|
||||
<div>
|
||||
<p class="sender-preview-error-title">Dokument konnte nicht geladen werden</p>
|
||||
<p class="sender-preview-error-msg">@_previewErrorMessage</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else if (_previewPdfBytes is not null && _previewViewerMounted)
|
||||
{
|
||||
<div class="sender-preview-viewer-wrap" style="padding: 0 5.5rem;">
|
||||
<div class="sender-preview-viewer-wrap">
|
||||
<DxPdfViewer DocumentContent="@_previewPdfBytes"
|
||||
ZoomLevel="-2"
|
||||
IsSinglePagePreview="true"
|
||||
|
||||
Reference in New Issue
Block a user