A page is a document: drop the sticky chrome and the bounded-frame opt-out
CI / full-gate (push) Successful in 2m49s

This commit is contained in:
2026-09-09 15:26:45 +02:00
parent 33065afd18
commit f959404c6f
12 changed files with 39 additions and 170 deletions
@@ -4,12 +4,3 @@
.scheduling-page .table-wrap {
margin-top: var(--space-3, 0.75rem);
}
/* The chain the shell cannot supply: `fill` bounds the content column, and every wrapper between it
and the table's own `.scroll-region` has to pass that height down. */
.app-fill .scheduling-page {
display: flex;
flex-direction: column;
flex: 1 1 auto;
min-height: 0;
}
+1 -2
View File
@@ -7,7 +7,7 @@
%><%
const navHtml = include("partials/nav-tree", { nodes: chrome.nav });
const filtersHtml = include("partials/filter-bar", filterBar);
const tableHtml = include("partials/data-table", { ...table, scrollRegion: true });
const tableHtml = include("partials/data-table", table);
const alertHtml = locals.error ? include("partials/alert", { text: locals.error, tone: "neg" }) : "";
const actions = canWrite
? '<a class="btn btn-primary" href="' + localeHref(newHref) + '"><svg class="ico ico-sm" aria-hidden="true"><use href="#i-plus"/></svg>' + t("scheduling.shifts.new") + '</a>'
@@ -16,7 +16,6 @@
<%- include("partials/shell", {
actions,
body: '<div class="scheduling-page">' + alertHtml + filtersHtml + '<p class="shift-count">' + count + '</p>' + tableHtml + '</div>',
fill: true, // a long list scrolls under its own header rather than taking the page with it
brand: chrome.brand,
breadcrumbs,
csrfToken: chrome.csrfToken,