fix: page de base - titre au-dessus du tableau, tableau au ras du sidebar (v7.49.2)
- .db-first (page_editor_scripts._applyLayout) quand le premier bloc est une
base embarquee : .blocks-container/.page-title-block passent a margin:0 +
padding-left:var(--space-lg) au lieu de max-width:900px centre -> le tableau
demarre a x=256 (marge topbar) au lieu de x=694 sur 1920px (mesure Playwright).
- .block-embed-collection { max-width:100%; overflow:hidden } : l'embed ne
deborde plus de sa colonne (les popovers fixes restent hors du clipping).
- page_editor_collection.html : h1.database-page-title au-dessus du conteneur
(les pages collection dediees n'avaient pas de titre).
- Bump VERSION/main.py 7.49.2, CHANGELOG, WORKLOAD, OpenAPI regenere.
- Instance locale flowdeck-final rebuildee flowdeck:v7.49.2 :8081, health OK.
This commit is contained in:
@@ -1,5 +1,23 @@
|
||||
# Changelog - FlowDeck
|
||||
|
||||
## v7.49.2 (2026-10-05) — Pages de base : titre au-dessus, tableau à gauche
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Le tableau d'une page de base commençait au 1/3 de la page** — une base
|
||||
créée depuis un document est un bloc `embed collection` rendu dans la
|
||||
colonne éditeur `.blocks-container` (`max-width: 900px; margin: 0 auto`) :
|
||||
centrée sur un grand écran, donc décalée loin du sidebar (mesuré x=694 sur
|
||||
1920 px). Nouvelle classe `.db-first` sur le wrapper éditeur quand le
|
||||
premier bloc est une base : titre et blocs passent à `margin: 0` +
|
||||
`padding-left: var(--space-lg)` (liseré de la topbar) — tableau au ras du
|
||||
sidebar (x=256 mesuré), titre au-dessus, plus de débordement de l'embed
|
||||
(`max-width: 100%`, le scroll horizontal reste géré par `.db-table-wrapper`).
|
||||
- **Les pages de base dédiées (`content_format='collection'`) n'avaient pas
|
||||
de titre** — `page_editor_collection.html` rend le tableau sans en-tête de
|
||||
page. Un `<h1 class="database-page-title">` est ajouté au-dessus du
|
||||
conteneur, avec le même liseré gauche que le tableau.
|
||||
|
||||
## v7.49.1 (2026-10-05) — Tableau des bases aligné sur le titre
|
||||
|
||||
### Fixed
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# WORKLOAD — FlowDeck Notion Clone
|
||||
|
||||
> **Début**: 2026-07-08 | **Version**: v7.49.1 (tableau des bases aligné sur le titre, marge gauche = topbar) | **Statut**: EN COURS 🔄
|
||||
> **Début**: 2026-07-08 | **Version**: v7.49.2 (pages de base : titre au-dessus du tableau, tableau calé à gauche au ras du sidebar) | **Statut**: EN COURS 🔄
|
||||
> **Cible**: parité Notion + intégration forge · **Follow-ups v7.3 livrés**: sidebar teamspaces, notif `page.updated`, charts `number` + dashboards multi-DB, unfurl forge, UI Settings → Audit — voir `ROADMAP.md § v7.3.0`
|
||||
|
||||
## Avancement Global
|
||||
|
||||
+1
-1
@@ -185,7 +185,7 @@ async def lifespan(_app: FastAPI):
|
||||
|
||||
app = FastAPI(
|
||||
title="FlowDeck",
|
||||
version="7.49.1",
|
||||
version="7.49.2",
|
||||
docs_url="/docs",
|
||||
redoc_url="/redoc",
|
||||
lifespan=lifespan,
|
||||
|
||||
@@ -5,6 +5,7 @@ page_title %}{{ page.title }}{% endblock %} {% block topbar %}
|
||||
{% set right_actions %}<span class="topbar-edited" style="cursor:pointer;" @click="edCall('toggleActivityOpen')">Edited <span x-text="edTimeAgo()"></span> ▾</span><button class="topbar-btn share-btn" @click="edCall('toggleShareOpen')"><span x-show="!edShared()">{{ fd_icon("lock",14) }} Share ▾</span><span x-show="edShared()" title="This page is shared">👥 Shared ▾</span></button><button class="topbar-btn" @click="edCall('copyPageLink')" title="Copy link">{{ fd_icon("link",14) }}</button><button class="topbar-btn star-btn" @click="edCall('toggleFavorite')" x-init="bindStar($el)"></button><button class="topbar-btn relative" @click="edCall('toggleMoreOpen')">⋯</button>{% endset %}
|
||||
{% include '_header.html' %}
|
||||
{% endblock %} {% block content %}
|
||||
<h1 class="database-page-title">{{ page.title }}</h1>
|
||||
{% include "_database_table.html" %}
|
||||
{% endblock %} {% block scripts %}
|
||||
<script data-cfasync="false" nonce="{{ csp_nonce() }}">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"openapi": "3.1.0",
|
||||
"info": {
|
||||
"title": "FlowDeck",
|
||||
"version": "7.49.1"
|
||||
"version": "7.49.2"
|
||||
},
|
||||
"paths": {
|
||||
"/auth/register": {
|
||||
|
||||
@@ -2244,6 +2244,32 @@ button.breadcrumb-current { max-width: 260px; }
|
||||
min-height: 300px;
|
||||
}
|
||||
|
||||
/* Page de base (premier bloc = embed collection) : le titre et le tableau
|
||||
s'alignent sur la marge gauche de la topbar (16px) au lieu d'être centrés
|
||||
dans la colonne 900px — le tableau démarre au ras du sidebar. */
|
||||
.page-editor-wrapper.db-first .page-cover-area,
|
||||
.page-editor-wrapper.db-first .page-title-block,
|
||||
.page-editor-wrapper.db-first .blocks-container {
|
||||
max-width: 1100px;
|
||||
margin: 0;
|
||||
padding-left: var(--space-lg);
|
||||
}
|
||||
|
||||
/* Une base embarquée ne doit jamais déborder de sa colonne de blocs :
|
||||
.db-table-wrapper interne gère déjà le scroll horizontal. */
|
||||
.block-embed-collection { max-width: 100%; overflow: hidden; }
|
||||
|
||||
/* Titre des pages de base dédiées (page_editor_collection.html) — même
|
||||
liseré gauche que .database-table-container. */
|
||||
.database-page-title {
|
||||
max-width: 1100px;
|
||||
margin: 0;
|
||||
padding: 28px var(--space-lg) 0;
|
||||
font-size: 30px;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.blocks-empty {
|
||||
padding: 40px 0;
|
||||
text-align: center;
|
||||
|
||||
@@ -1124,6 +1124,10 @@ const PD=(()=>{try{const el=document.getElementById('page-data');return el?JSON.
|
||||
if(!wrap)return;
|
||||
wrap.classList.toggle('full-width',!!this.fullWidth);
|
||||
wrap.classList.toggle('small-text',!!this.fontSmall);
|
||||
// Page dont le premier bloc est une base : layout « page de base »
|
||||
// Notion — titre et tableau calés à gauche, pas centrés.
|
||||
const b0=this.blocks&&this.blocks[0];
|
||||
wrap.classList.toggle('db-first',!!(b0&&b0.type==='embed'&&b0.embed_type==='collection'));
|
||||
},
|
||||
closeInviteSuggest(){ this.inviteSuggestOpen = false; this.inviteUsers = []; },
|
||||
setSharePerm(a, perm){ this.updateShare(a.id, perm); a.permOpen = false; },
|
||||
|
||||
Reference in New Issue
Block a user