refactor: combined duration (pages + minutes), has_annexes checkbox, remove Mo

- Remove Mo option from duration, keep only pages and minutes
- Redesign duration fieldset: separate Pages input + Durée h:m inputs, both can be set together
- Fix minutes input visibility: wider inputs (6ch), proper CSS layout
- Add has_annexes checkbox to fichiers fragment + DB column + controllers
- Display duration on admin backoffice recap page
- Display duration on public partage recap page
- Update public TFE page for new combined duration format
- Migration 041: add duration_pages, duration_minutes, has_annexes columns; migrate data; recreate views
This commit is contained in:
Pontoporeia
2026-07-03 15:58:10 +02:00
parent 42c4e78df6
commit 4fa57d592a
20 changed files with 335 additions and 173 deletions
+23 -10
View File
@@ -2160,18 +2160,36 @@ th.admin-ap-col {
100% { transform: scaleX(0); transform-origin: right; }
}
/* ── Sidebar TOC (matches public .page-content alignment pattern) ────────── */
/* ── Sidebar TOC (matches public .page-content grid layout) ────────────── */
.admin-main--toc {
display: flex;
display: grid;
grid-template-columns: 180px 1fr;
gap: var(--space-2xl);
align-items: start;
padding: var(--space-xl) var(--space-m) var(--space-2xl);
}
.admin-main--toc > article {
flex: 1;
min-width: 0;
/* Desktop: article in second column */
@media (min-width: 768px) {
.admin-main--toc > article {
grid-column: 2;
min-width: 0;
max-width: 100%;
}
}
/* Mobile: single column */
@media (max-width: 767px) {
.admin-main--toc {
grid-template-columns: 1fr;
gap: var(--space-l);
padding: var(--space-m) var(--space-s) var(--space-xl);
}
.admin-main--toc > article {
grid-column: 1;
}
}
/* Align first child of article with TOC heading (same as public) */
@@ -2188,11 +2206,6 @@ th.admin-ap-col {
}
/* Admin TOC: same <details class="toc"> as public pages, positioned sticky */
#admin-toc {
width: 180px;
flex-shrink: 0;
}
#admin-toc .toc-list a {
font-size: var(--step--1);
}
+10 -1
View File
@@ -352,7 +352,11 @@
border-radius: var(--radius);
}
.duration-time-inputs {
.duration-field {
margin-bottom: var(--space-xs);
}
.duration-time-field {
display: flex;
align-items: flex-end;
gap: var(--space-xs);
@@ -364,6 +368,11 @@
gap: var(--space-3xs);
}
.duration-time-fields input[type="number"] {
width: 6ch;
min-width: 6ch;
}
.duration-time-fields span {
font-size: var(--step--1);
color: var(--text-secondary);