Enhanced `ReportViewer.razor` with new UI elements, including a detailed `receiver-info-header` and `receiver-action-bar` for better signature workflows. Refactored signature logic to ensure accurate placement using `report.AfterPrint` and `PrintingSystem.Pages`. Removed legacy methods and iText7-based workflows. Added Turkish documentation (`COPILOT_CONTEXT_TR.md`) detailing project structure, workflows, and pending tasks. Updated `MainLayout.razor` to simplify layout. Improved styling in `app.css` for better visual hierarchy and readability. Documented pending tasks such as adding signature backgrounds, improving checkbox styles, and automating signature workflows.
245 lines
5.3 KiB
CSS
245 lines
5.3 KiB
CSS
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');
|
|
|
|
html, body {
|
|
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
padding: 0;
|
|
}
|
|
|
|
html, body {
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
article {
|
|
height: calc(100vh - 70px);
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
padding-left: 0 !important;
|
|
padding-right: 0 !important;
|
|
}
|
|
|
|
.receiver-page-layout {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.receiver-signature-panel {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.receiver-viewer-wrapper {
|
|
flex: 1 1 0;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.valid.modified:not([type=checkbox]) {
|
|
outline: 1px solid #26b050;
|
|
}
|
|
|
|
.invalid {
|
|
outline: 1px solid red;
|
|
}
|
|
|
|
.validation-message {
|
|
color: red;
|
|
}
|
|
|
|
#blazor-error-ui {
|
|
background: lightyellow;
|
|
bottom: 0;
|
|
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
|
|
display: none;
|
|
left: 0;
|
|
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
|
|
position: fixed;
|
|
width: 100%;
|
|
z-index: 1000;
|
|
}
|
|
|
|
#blazor-error-ui .dismiss {
|
|
cursor: pointer;
|
|
position: absolute;
|
|
right: 0.75rem;
|
|
top: 0.5rem;
|
|
}
|
|
|
|
.dx-blazor-reporting-container {
|
|
height: calc(100vh - 130px) !important;
|
|
width: 100% !important;
|
|
}
|
|
|
|
/* ── Force DevExpress viewer pages into a single centered column ─────────── */
|
|
.dxbrv-report-preview-content {
|
|
display: flex !important;
|
|
flex-direction: column !important;
|
|
align-items: center !important;
|
|
}
|
|
|
|
/* ── Annotation signature checkbox overlays ─────────────────────────────── */
|
|
.annot-sig-cb-wrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
border-radius: 6px;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
font-family: "Segoe UI", Arial, sans-serif;
|
|
padding: 0 12px;
|
|
overflow: hidden;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
|
|
border: none;
|
|
color: #ffffff;
|
|
box-shadow: 0 2px 8px rgba(44, 62, 80, 0.35);
|
|
transition: box-shadow 0.18s, filter 0.18s;
|
|
}
|
|
|
|
.annot-sig-cb-wrapper:hover {
|
|
filter: brightness(1.12);
|
|
box-shadow: 0 4px 14px rgba(44, 62, 80, 0.45);
|
|
}
|
|
|
|
.annot-sig-cb-wrapper--checked {
|
|
background: linear-gradient(135deg, #1a6b2a 0%, #27ae60 100%);
|
|
box-shadow: 0 2px 8px rgba(26, 107, 42, 0.35);
|
|
}
|
|
|
|
.annot-sig-cb-wrapper--checked:hover {
|
|
filter: brightness(1.1);
|
|
box-shadow: 0 4px 14px rgba(26, 107, 42, 0.45);
|
|
}
|
|
|
|
.annot-sig-cb {
|
|
display: none;
|
|
}
|
|
|
|
.annot-sig-cb__label {
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
pointer-events: none;
|
|
letter-spacing: 0.01em;
|
|
}
|
|
|
|
/* ── Envelope info header ────────────────────────────────────────────────── */
|
|
.receiver-info-header {
|
|
border-bottom: 1px solid rgba(0,0,0,.08);
|
|
}
|
|
|
|
.receiver-info-header__gradient {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
padding: 10px 16px 8px;
|
|
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
|
|
color: #fff;
|
|
}
|
|
|
|
.receiver-info-header__left {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.receiver-info-header__icon {
|
|
flex-shrink: 0;
|
|
opacity: .85;
|
|
}
|
|
|
|
.receiver-info-header__title {
|
|
font-size: 0.92rem;
|
|
font-weight: 600;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
max-width: 340px;
|
|
}
|
|
|
|
.receiver-info-header__sender {
|
|
font-size: 0.72rem;
|
|
opacity: .8;
|
|
margin-top: 1px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
max-width: 400px;
|
|
}
|
|
|
|
.receiver-info-header__badges {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 5px;
|
|
align-items: center;
|
|
}
|
|
|
|
.receiver-info-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
background: rgba(255,255,255,.18);
|
|
color: #fff;
|
|
border-radius: 20px;
|
|
padding: 2px 9px;
|
|
font-size: 0.70rem;
|
|
font-weight: 500;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.receiver-info-badge--muted {
|
|
background: rgba(255,255,255,.10);
|
|
opacity: .8;
|
|
}
|
|
|
|
.receiver-info-badge--accent {
|
|
background: rgba(39,174,96,.35);
|
|
border: 1px solid rgba(39,174,96,.5);
|
|
}
|
|
|
|
.receiver-info-message {
|
|
padding: 7px 16px;
|
|
font-size: 0.78rem;
|
|
color: #444;
|
|
border-bottom: 1px solid rgba(0,0,0,.05);
|
|
white-space: pre-wrap;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.receiver-info-private-message {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 4px;
|
|
padding: 5px 16px 6px;
|
|
font-size: 0.75rem;
|
|
color: #5a5a72;
|
|
background: #f8f7ff;
|
|
border-top: 1px solid rgba(90,80,180,.12);
|
|
}
|
|
|
|
/* ── Signature action bar ────────────────────────────────────────────────── */
|
|
.receiver-action-bar {
|
|
border-bottom: 1px solid rgba(0,0,0,.08);
|
|
background: #fff;
|
|
}
|
|
|
|
.receiver-action-bar__inner {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
padding: 7px 14px;
|
|
}
|
|
|
|
.receiver-action-bar__progress {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
flex-wrap: wrap;
|
|
} |