fix(editor): v4.7.1 popovers Share/More/Activity/Move rendus sous le viewport + sous-menu Export inatteignable
- share-dialog/more-menu/activity-popover/move-dialog: enfants de .page-editor-wrapper (overflow-y:auto) ancores en absolute top:100% -> invisibles sous le viewport. Repositionnes en fixed sous la topbar, scope .page-editor-wrapper > (pas de regression sur .more-menu de library/local_workspace) + variante mobile <768px. - Item Export du menu More faisait moreOpen=false avant d'ouvrir exportOpen: les 4 formats etaient inaccessibles. Devient un toggle, le menu reste ouvert. - Cache busting app.css v=4.7.1; VERSION/main.py bump 4.7.1; CHANGELOG+ROADMAP a jour. - Verifie Playwright headless: Share/More/Export/download Markdown/toast OK, 0 pageerror; 190/190 tests.
This commit is contained in:
@@ -1,5 +1,16 @@
|
||||
# Changelog — FlowDeck
|
||||
|
||||
## v4.7.1 (2026-09-03) — Fix UI éditeur : menus Share / More invisibles
|
||||
|
||||
### Fixed
|
||||
- **Boutons « Share » et « ⋯ » (More) sans réaction visible dans l'éditeur de page** — les popovers (share-dialog, more-menu, activity-popover, move-dialog), enfants de `.page-editor-wrapper` (conteneur à `overflow-y:auto`), étaient ancrés en `absolute; top:100%` → rendus SOUS le viewport, donc invisibles. Repositionnés en `position:fixed` sous la topbar (scoped `.page-editor-wrapper > …` pour ne pas casser les `.more-menu` des pages library/local_workspace) + variantes mobile dans le media query < 768px.
|
||||
- **Sous-menu Export se refermait** — l'itém « ↗ Export » faisait `moreOpen=false` avant d'ouvrir `exportOpen` : les 4 formats restaient inaccessibles au clic. Devient un toggle (`exportOpen = !exportOpen`), le menu More reste ouvert.
|
||||
- **Cache CSS** — version du query string `app.css` bumpée (`v=3.0.0` → `v=4.7.1`) pour invalider le cache navigateur.
|
||||
|
||||
### Vérifié
|
||||
- Playwright headless (desktop 1280×800) : Share, More, sous-menu Export, popover Activity et menu More après scroll = tous visibles dans le viewport ; téléchargement Markdown + toast « Exported as Markdown » OK ; zéro pageerror.
|
||||
- 190/190 tests pytest passent.
|
||||
|
||||
## v4.7.0 (2026-09-03) — Export
|
||||
|
||||
### Added
|
||||
|
||||
+7
-1
@@ -285,6 +285,12 @@ Détails livrés :
|
||||
- PDF généré via `xhtml2pdf` (pip) — aucun lib système requise
|
||||
- 6 nouveaux tests (Markdown, sous-pages, HTML, PDF, Site, 404)
|
||||
|
||||
### v4.7.1 — Fix UI Export / Share / More ✅ (2026-09-03)
|
||||
- [x] **Share / More / Activity / Move-to popovers** — rendus sous le viewport (absolute + parent scrollable) → repositionnés fixed sous la topbar
|
||||
- [x] **Sous-menu Export** — l'itém Export fermait le menu More ; devient un toggle, formats accessibles
|
||||
- [x] **Cache CSS** — query string app.css bumpé v4.7.1
|
||||
- [x] Vérifié Playwright headless + 190/190 tests
|
||||
|
||||
### v4.8.0 — Collaboration
|
||||
- [ ] **Inline comments** — commentaires sur sélection de texte
|
||||
- [ ] **@mentions** — notifier un utilisateur → page/commentaire
|
||||
@@ -437,4 +443,4 @@ v4.0.2 ✅ v4.1.0 ✅ v4.2.0 ✅ v4.3.0 ✅ v4.4.0 ✅ v4.5.0 ✅
|
||||
Quality Data Sources Templates + 10 Views Tasks & Sprints & Content Export Collab + Pro + Agent
|
||||
& Tests & Linked DB Dashboards complets Dependencies My Tasks Blocks MD/PDF/HTML Agent IA (futur)
|
||||
|
||||
*Dernière mise à jour: 2026-09-03 — v4.7.0 Export complété ✅*
|
||||
*Dernière mise à jour: 2026-09-03 — v4.7.1 Fix UI Share/More/Export ✅*
|
||||
|
||||
+2
-2
@@ -39,13 +39,13 @@ async def lifespan(_app: FastAPI):
|
||||
(admin_hash,)
|
||||
)
|
||||
conn.commit()
|
||||
logger.info("FlowDeck v4.7.0 started on port %d", settings.app_port)
|
||||
logger.info("FlowDeck v4.7.1 started on port %d", settings.app_port)
|
||||
yield
|
||||
|
||||
|
||||
app = FastAPI(
|
||||
title="FlowDeck",
|
||||
version="4.7.0",
|
||||
version="4.7.1",
|
||||
docs_url="/docs" if settings.log_level == "DEBUG" else None,
|
||||
redoc_url=None,
|
||||
lifespan=lifespan,
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
@click.outside="!_justOpened && (moreOpen = false)"
|
||||
x-transition
|
||||
>
|
||||
<div class="more-menu-item" @click="moreOpen = false; exportOpen = true">↗ Export</div>
|
||||
<div class="more-menu-item" @click="exportOpen = !exportOpen">↗ Export <span style="margin-left:auto;font-size:10px;opacity:.6">▾</span></div>
|
||||
<template x-if="exportOpen">
|
||||
<div class="more-menu-sub">
|
||||
<div class="more-menu-item" @click="exportPage('markdown')"> Markdown (.md)</div>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>FlowDeck — {% block title_prefix %}Home{% endblock %}</title>
|
||||
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg">
|
||||
<link rel="stylesheet" href="/static/css/app.css?v=3.0.0">
|
||||
<link rel="stylesheet" href="/static/css/app.css?v=4.7.1">
|
||||
<link rel="stylesheet" href="/static/css/katex.min.css?v=0.16.11">
|
||||
<style>
|
||||
/* ── Mobile responsive (v4.0.2) ── */
|
||||
|
||||
@@ -2997,6 +2997,37 @@ button.breadcrumb-current { max-width: 260px; }
|
||||
border-radius: var(--radius-lg); box-shadow: var(--shadow-modal);
|
||||
z-index: 999;
|
||||
}
|
||||
/* Page editor: these popovers are children of .page-editor-wrapper (a scroll
|
||||
container), so absolute top:100% anchored them BELOW the viewport. Pin them
|
||||
fixed under the topbar instead. Scoped to the editor wrapper so other pages
|
||||
(library, local_workspace) keep their relative-positioned .more-menu. */
|
||||
.page-editor-wrapper > .share-dialog,
|
||||
.page-editor-wrapper > .more-menu,
|
||||
.page-editor-wrapper > .activity-popover,
|
||||
.page-editor-wrapper > .move-dialog {
|
||||
position: fixed !important;
|
||||
top: calc(var(--topbar-height) + 6px) !important;
|
||||
}
|
||||
.page-editor-wrapper > .share-dialog { right: 72px; }
|
||||
.page-editor-wrapper > .more-menu { right: 16px; }
|
||||
.page-editor-wrapper > .activity-popover,
|
||||
.page-editor-wrapper > .move-dialog { right: 16px !important; }
|
||||
@media (max-width: 768px) {
|
||||
/* Keep editor popovers centered/stacked on mobile (base.html media rule
|
||||
uses !important; mirror the specificity so it still wins here). */
|
||||
.page-editor-wrapper > .share-dialog,
|
||||
.page-editor-wrapper > .more-menu,
|
||||
.page-editor-wrapper > .activity-popover,
|
||||
.page-editor-wrapper > .move-dialog {
|
||||
right: auto !important;
|
||||
top: 50% !important;
|
||||
width: 92vw !important;
|
||||
max-width: 400px;
|
||||
transform: translate(-50%, -50%) !important;
|
||||
}
|
||||
.page-editor-wrapper > .more-menu,
|
||||
.page-editor-wrapper > .activity-popover { top: 60px !important; transform: none !important; left: auto !important; right: 12px !important; width: auto !important; }
|
||||
}
|
||||
/* Header with tabs */
|
||||
.sd-header {
|
||||
display: flex; align-items: center; height: 56px;
|
||||
|
||||
Reference in New Issue
Block a user