fix: side peek des bases repasse en vanilla JS + largeur 1100px standard (v7.49.0)
- Panneau peek: les bindings Alpine (x-data absent du conteneur) rendaient loovverture et le redimensionnement inoperants -> cblage direct sur le document. - Helper unique window.fdWirePeekResize (app.js): pointer capture, 300px-90vw, clic=fermer, largeur persiste fd_peek_width partagee entre les 4 peeks. - database-table-container margin:0 (tableau colle a gauche, marge Library). - .lib-container remonte dans app.css (trash etait pleine largeur), .db-index 1100px. - ObsiGate verifie sans code: creation .xlsx OK (openpyxl, #186).
This commit is contained in:
@@ -200,39 +200,11 @@ const _wsInitData = (function() { // lexical : NON propriété globalThis →
|
||||
},
|
||||
|
||||
_initResizeHandle() {
|
||||
var panel = document.getElementById('ws-preview-panel');
|
||||
var handle = document.getElementById('ws-preview-resize-handle');
|
||||
if (!panel || !handle) return;
|
||||
var startX, startWidth, dragging = false;
|
||||
handle.addEventListener('pointerdown', function(e) {
|
||||
e.preventDefault();
|
||||
handle.setPointerCapture(e.pointerId);
|
||||
startX = e.clientX;
|
||||
startWidth = panel.offsetWidth;
|
||||
dragging = true;
|
||||
document.body.style.userSelect = 'none';
|
||||
});
|
||||
handle.addEventListener('pointermove', function(e) {
|
||||
if (!dragging) return;
|
||||
var deltaX = startX - e.clientX;
|
||||
var newWidth = Math.max(300, Math.min(window.innerWidth * 0.9, startWidth + deltaX));
|
||||
panel.style.width = newWidth + 'px';
|
||||
});
|
||||
handle.addEventListener('pointerup', function(e) {
|
||||
if (!dragging) return;
|
||||
document.body.style.userSelect = '';
|
||||
var moved = Math.abs(e.clientX - startX);
|
||||
if (moved < 3) {
|
||||
window._wsData.closePreviewPanel();
|
||||
}
|
||||
dragging = false;
|
||||
try { localStorage.setItem('fd_peek_width', panel.style.width); } catch { /* volontaire */ }
|
||||
handle.releasePointerCapture(e.pointerId);
|
||||
});
|
||||
try {
|
||||
var saved = localStorage.getItem('fd_peek_width');
|
||||
if (saved) panel.style.width = saved;
|
||||
} catch { /* volontaire */ }
|
||||
// Helper partagé (app.js) — pointer capture, persistance fd_peek_width.
|
||||
window.fdWirePeekResize(
|
||||
document.getElementById('ws-preview-panel'),
|
||||
document.getElementById('ws-preview-resize-handle'),
|
||||
function () { window._wsData.closePreviewPanel(); });
|
||||
},
|
||||
|
||||
_recompute() {
|
||||
@@ -403,7 +375,7 @@ const _wsInitData = (function() { // lexical : NON propriété globalThis →
|
||||
return null;
|
||||
},
|
||||
|
||||
// ── Preview panel (loads editor in iframe via /pages/{id}?embed=1) ──
|
||||
// ── Preview panel (loads the full-screen editor in an iframe) ──
|
||||
selectForPreview(node) {
|
||||
var panel = document.getElementById('ws-preview-panel');
|
||||
if (!panel) return;
|
||||
@@ -423,9 +395,12 @@ const _wsInitData = (function() { // lexical : NON propriété globalThis →
|
||||
window.showToast('Failed to copy', 'error');
|
||||
});
|
||||
};
|
||||
// Load editor in iframe
|
||||
// Load the full-screen editor in the iframe (no `?embed=1`: the peek
|
||||
// shows the same editor as the page itself). `about:blank` first, so
|
||||
// opening another document really reloads the frame instead of keeping
|
||||
// the previous one when the URL happens to be identical.
|
||||
var iframe = document.getElementById('ws-preview-iframe');
|
||||
if (iframe) iframe.src = '/pages/' + node.id + '?embed=1';
|
||||
if (iframe) { iframe.src = 'about:blank'; iframe.src = '/pages/' + node.id; }
|
||||
// Show panel
|
||||
panel.style.display = 'flex';
|
||||
requestAnimationFrame(function() {
|
||||
|
||||
Reference in New Issue
Block a user