fix(editor): placeholder des blocs disparait des la frappe (input bascule .empty)
La classe .empty (qui pilote les placeholders "Press 'space' for AI or '/' for commands", "Heading 1", "List", etc.) n'etait basculee qu'au render(). Pendant la frappe, l'evenement input mettait a jour dirty/autoSave mais jamais .empty : le texte d'aide restait visible sur un bloc plein. Le listener input des blocs bascule desormais .empty en direct : texte saisi -> placeholder disparait; bloc vide -> placeholder reapparait. v5.1.5
This commit is contained in:
+17
-1
@@ -1,6 +1,22 @@
|
||||
# Changelog — FlowDeck
|
||||
|
||||
## v5.1.4 (2026-09-07) — Corrections : placeholder invisible, flèches `/`, item vocabulaire, largeur AI
|
||||
## v5.1.5 (2026-09-07) — Placeholder des blocs : disparaît dès la frappe
|
||||
|
||||
> Les textes d'aide « Press 'space' for AI or '/' for commands », « Heading 1 »,
|
||||
> « List », etc. restaient affichés pendant l'édition.
|
||||
|
||||
### Cause
|
||||
- La classe `.empty` (qui pilote les placeholders) n'était basculée qu'au
|
||||
`render()`. Pendant la frappe, l'événement `input` mettait à jour `dirty` et
|
||||
`autoSave` mais **jamais** `.empty` : le texte d'aide persistait sur un bloc qui
|
||||
avait pourtant du contenu.
|
||||
|
||||
### Correctif
|
||||
- Le listener `input` des blocs (rendu `render()`) bascule désormais `.empty` en
|
||||
direct selon le contenu : dès qu'un caractère est saisi, `.empty` est retiré et
|
||||
le placeholder disparaît ; quand le bloc est vidé, `.empty` revient et le
|
||||
placeholder réapparaît (mécanisme identique pour les titres « Heading 1… »,
|
||||
listes, callout, etc.).
|
||||
|
||||
> Résout les derniers retours UI de l'éditeur v5.1.2/5.1.3.
|
||||
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ async def lifespan(_app: FastAPI):
|
||||
|
||||
app = FastAPI(
|
||||
title="FlowDeck",
|
||||
version="5.1.4",
|
||||
version="5.1.5",
|
||||
docs_url="/docs" if settings.log_level == "DEBUG" else None,
|
||||
redoc_url=None,
|
||||
lifespan=lifespan,
|
||||
|
||||
@@ -751,7 +751,7 @@
|
||||
setTimeout(()=>{ct.querySelectorAll('.block-embed-collection').forEach(el=>{const cid=parseInt(el.id.replace('inline-db-',''));if(cid&&window.FlowDeckDB)window.FlowDeckDB.renderInto(el,cid,null);});},50);
|
||||
// Initialize AI Meeting Note widgets (block type 'meeting')
|
||||
setTimeout(()=>{ct.querySelectorAll('[data-meeting-bid]').forEach(function(el){if(window.FDMeeting)window.FDMeeting.mount(el.getAttribute('data-meeting-bid'),el);});},50);
|
||||
ct.querySelectorAll('[data-bid]').forEach(el=>{el.addEventListener('input',()=>{self.dirty=true;self.autoSave();})});
|
||||
ct.querySelectorAll('[data-bid]').forEach(el=>{el.addEventListener('input',()=>{self.dirty=true;self.autoSave();if(el.hasAttribute&&el.hasAttribute('data-placeholder'))el.classList.toggle('empty',!(el.textContent||'').trim());})});
|
||||
ct.querySelectorAll('[data-placeholder]').forEach(el=>{el.innerHTML=el.innerHTML.replace(/<br[^>]*>/gi,'').trim()!==''?el.innerHTML:'';el.classList.toggle('empty',!el.textContent.trim());});
|
||||
},
|
||||
_renderKatex(el,tex){
|
||||
|
||||
Reference in New Issue
Block a user