From 5ff2a32087c9102c5d2d1cf623dfba8696345a47 Mon Sep 17 00:00:00 2001
From: TronoSfera <119615520+TronoSfera@users.noreply.github.com>
Date: Thu, 26 Feb 2026 22:32:29 +0300
Subject: [PATCH] Task P052-P053 fix
---
app/web/admin.css | 43 ++++++++++++++++++
app/web/admin.jsx | 6 +--
.../admin/features/config/ConfigSection.jsx | 3 +-
app/web/landing.css | 17 +++++++
app/web/landing.js | 37 +++++++++++++--
celerybeat-schedule | Bin 16384 -> 16384 bytes
6 files changed, 97 insertions(+), 9 deletions(-)
diff --git a/app/web/admin.css b/app/web/admin.css
index 2b4892f..3e66f7d 100644
--- a/app/web/admin.css
+++ b/app/web/admin.css
@@ -920,6 +920,15 @@
background: rgba(255, 255, 255, 0.015);
}
+ /* Main table data lives in its own scroll area; controls and pager remain outside of it. */
+ .table-scroll-region {
+ min-height: 240px;
+ max-height: clamp(260px, 50vh, 620px);
+ overflow: auto;
+ overscroll-behavior: contain;
+ scrollbar-gutter: stable both-edges;
+ }
+
table {
width: 100%;
border-collapse: collapse;
@@ -965,6 +974,19 @@
letter-spacing: 0.06em;
}
+ .table-scroll-region thead th {
+ position: sticky;
+ top: 0;
+ z-index: 2;
+ background: linear-gradient(160deg, rgba(23, 34, 46, 0.98), rgba(16, 24, 33, 0.98));
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05);
+ backdrop-filter: blur(6px);
+ }
+
+ .table-scroll-region tbody tr:last-child td {
+ border-bottom-color: transparent;
+ }
+
.sortable-th {
cursor: pointer;
user-select: none;
@@ -1148,6 +1170,27 @@
flex-wrap: wrap;
}
+ .table-footer-bar {
+ margin-top: 0;
+ padding: 0.55rem 0.65rem;
+ border: 1px solid var(--line);
+ border-top: none;
+ border-radius: 0 0 12px 12px;
+ background: linear-gradient(160deg, rgba(18, 28, 37, 0.96), rgba(13, 20, 28, 0.98));
+ position: sticky;
+ bottom: 0;
+ z-index: 1;
+ }
+
+ .table-scroll-region + .table-footer-bar {
+ margin-top: -1px;
+ }
+
+ .filter-toolbar + .table-scroll-region {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+
.status {
margin: 0.6rem 0 0;
min-height: 1.1rem;
diff --git a/app/web/admin.jsx b/app/web/admin.jsx
index 95acffe..3329320 100644
--- a/app/web/admin.jsx
+++ b/app/web/admin.jsx
@@ -79,7 +79,7 @@ const NEW_REQUEST_CLIENT_OPTION = "__new_client__";
function DataTable({ headers, rows, emptyColspan, renderRow, onSort, sortClause }) {
return (
-
+
@@ -120,7 +120,7 @@ const NEW_REQUEST_CLIENT_OPTION = "__new_client__";
function TablePager({ tableState, onPrev, onNext, onLoadAll }) {
return (
-
+
{tableState.showAll
? "Всего: " + tableState.total + " • показаны все записи"
@@ -389,7 +389,7 @@ const NEW_REQUEST_CLIENT_OPTION = "__new_client__";