Refactor SenderPdfImageEditor layout and styles
Refactored `SenderPdfImageEditor.razor` to improve readability and maintainability by introducing a new wrapper element (`sender-image-editor-shell`) and reorganizing the toolbar into a sticky container (`sender-image-editor__toolbar-host`). Updated conditional rendering logic to handle `PageCount` cases more effectively. Enhanced styles in `envelope-viewer.css`: - Added `.sender-image-editor-shell` for layout structure. - Made toolbar sticky with `.sender-image-editor__toolbar-host`. - Improved alignment, spacing, and responsiveness of elements. - Adjusted padding and margins for better layout consistency. These changes improve user experience and maintainability.
This commit is contained in:
@@ -5,25 +5,28 @@
|
|||||||
@inject IStringLocalizer<Resource> UiLocalizer
|
@inject IStringLocalizer<Resource> UiLocalizer
|
||||||
@inject IJSRuntime JSRuntime
|
@inject IJSRuntime JSRuntime
|
||||||
|
|
||||||
@if (PageCount > 0)
|
<div class="sender-image-editor-shell">
|
||||||
{
|
@if (PageCount > 0)
|
||||||
<SenderPdfImageEditorToolbar CurrentPage="1"
|
|
||||||
TotalPages="@PageCount"
|
|
||||||
ZoomPercent="112" />
|
|
||||||
}
|
|
||||||
|
|
||||||
<div class="pdf-editor-wrapper sender-image-editor sender-editor-pdf-viewer"
|
|
||||||
style="cursor: @(IsPlacementMode ? "crosshair" : (_isDragging ? "grabbing" : "default"));"
|
|
||||||
@onclick="HandleClickAsync"
|
|
||||||
@onmousemove="OnEditorMouseMoveAsync"
|
|
||||||
@onmouseup="OnEditorMouseUp"
|
|
||||||
@onmouseleave="OnEditorMouseUp">
|
|
||||||
@if (PageCount <= 0)
|
|
||||||
{
|
{
|
||||||
<div class="sender-image-editor__empty">@L("SenderEditor_NoPagesToDisplay", "Keine Seiten zur Anzeige verfügbar.")</div>
|
<div class="sender-image-editor__toolbar-host">
|
||||||
|
<SenderPdfImageEditorToolbar CurrentPage="1"
|
||||||
|
TotalPages="@PageCount"
|
||||||
|
ZoomPercent="112" />
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
<div class="pdf-editor-wrapper sender-image-editor sender-editor-pdf-viewer"
|
||||||
|
style="cursor: @(IsPlacementMode ? "crosshair" : (_isDragging ? "grabbing" : "default"));"
|
||||||
|
@onclick="HandleClickAsync"
|
||||||
|
@onmousemove="OnEditorMouseMoveAsync"
|
||||||
|
@onmouseup="OnEditorMouseUp"
|
||||||
|
@onmouseleave="OnEditorMouseUp">
|
||||||
|
@if (PageCount <= 0)
|
||||||
|
{
|
||||||
|
<div class="sender-image-editor__empty">@L("SenderEditor_NoPagesToDisplay", "Keine Seiten zur Anzeige verfügbar.")</div>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
@if (Pages.Count == 0 && !string.IsNullOrWhiteSpace(PdfDataUrl))
|
@if (Pages.Count == 0 && !string.IsNullOrWhiteSpace(PdfDataUrl))
|
||||||
{
|
{
|
||||||
<div class="sender-image-editor__native-preview">
|
<div class="sender-image-editor__native-preview">
|
||||||
@@ -85,7 +88,8 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|||||||
@@ -61,13 +61,34 @@
|
|||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sender-image-editor-shell {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sender-image-editor__toolbar-host {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 40;
|
||||||
|
height: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
.sender-image-toolbar {
|
.sender-image-toolbar {
|
||||||
|
pointer-events: auto;
|
||||||
|
position: absolute;
|
||||||
|
top: 0.75rem;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: calc(100% - 2rem);
|
||||||
max-width: 980px;
|
max-width: 980px;
|
||||||
margin: 0 auto 1rem;
|
margin: 0;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto;
|
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto;
|
||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sender-image-toolbar__group {
|
.sender-image-toolbar__group {
|
||||||
@@ -141,11 +162,12 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 1.25rem;
|
gap: 1.25rem;
|
||||||
|
padding-top: 6.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sender-image-editor__native-preview {
|
.sender-image-editor__native-preview {
|
||||||
max-width: 980px;
|
max-width: 980px;
|
||||||
margin: 0 auto 1rem;
|
margin: 6.2rem auto 1rem;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
border: 1px solid #cbd5e1;
|
border: 1px solid #cbd5e1;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
@@ -1250,12 +1272,22 @@ body.resizing {
|
|||||||
|
|
||||||
.sender-image-toolbar {
|
.sender-image-toolbar {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
|
width: calc(100% - 1rem);
|
||||||
|
top: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sender-image-toolbar__group {
|
.sender-image-toolbar__group {
|
||||||
min-height: 3.9rem;
|
min-height: 3.9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sender-image-editor__pages {
|
||||||
|
padding-top: 12.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sender-image-editor__native-preview {
|
||||||
|
margin-top: 12.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.sender-image-toolbar__value-box {
|
.sender-image-toolbar__value-box {
|
||||||
min-width: 7.5rem;
|
min-width: 7.5rem;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
|
|||||||
Reference in New Issue
Block a user