fix: _ctxMenuData — objet léger sans conflit Alpine
_wsInitData (162 keys) causait "Cannot redefine property: $nextTick" quand réutilisé comme x-data sur .ctx-menu. Alpine ajoute des propriétés magiques ($nextTick, $el, etc.) et certaines entrent en conflit avec les propriétés de l'objet massif. Solution: window._ctxMenuData — objet minimal avec getters/setters déléguant à _wsInitData. Seulement 20 propriétés, zéro conflit. + Restauré les directives Alpine (x-show, x-for, :style) dans le menu puisque le scope Alpine fonctionne maintenant.
This commit is contained in:
@@ -1916,6 +1916,28 @@ for (var _i = 0; _i < _wsKeys.length; _i++) {
|
||||
try { window[_wsKeys[_i]] = window._wsInitData[_wsKeys[_i]]; } catch(e) {}
|
||||
}
|
||||
_wsInitData = window._wsInitData;
|
||||
// Objet léger pour le ctx-menu (évite le conflit $nextTick avec Alpine)
|
||||
window._ctxMenuData = {
|
||||
get ctxMenu() { return window._wsInitData.ctxMenu; },
|
||||
set ctxMenu(v) { window._wsInitData.ctxMenu = v; },
|
||||
get ctxTagAdding() { return window._wsInitData.ctxTagAdding; },
|
||||
set ctxTagAdding(v) { window._wsInitData.ctxTagAdding = v; },
|
||||
get ctxTagExistingOpen() { return window._wsInitData.ctxTagExistingOpen; },
|
||||
set ctxTagExistingOpen(v) { window._wsInitData.ctxTagExistingOpen = v; },
|
||||
get ctxAvailTags() { return window._wsInitData.ctxAvailTags; },
|
||||
set ctxAvailTags(v) { window._wsInitData.ctxAvailTags = v; },
|
||||
get ctxNewTagColor() { return window._wsInitData.ctxNewTagColor; },
|
||||
set ctxNewTagColor(v) { window._wsInitData.ctxNewTagColor = v; },
|
||||
get ctxTagColors() { return window._wsInitData.ctxTagColors; },
|
||||
ctxMenuOpenPage() { window._wsInitData.ctxMenuOpenPage(); },
|
||||
ctxMenuOpenFolder() { window._wsInitData.ctxMenuOpenFolder(); },
|
||||
ctxMenuRename() { window._wsInitData.ctxMenuRename(); },
|
||||
ctxMenuDuplicate() { window._wsInitData.ctxMenuDuplicate(); },
|
||||
ctxMenuDelete() { window._wsInitData.ctxMenuDelete(); },
|
||||
ctxAddExistingTag(t) { window._wsInitData.ctxAddExistingTag(t); },
|
||||
ctxAddNewTag(n, c) { window._wsInitData.ctxAddNewTag(n, c); },
|
||||
ctxRemoveTag(id) { window._wsInitData.ctxRemoveTag(id); },
|
||||
};
|
||||
console.log('FLOWDECK v2.4.6 — IIFE done, _wsInitData keys:', Object.keys(window._wsInitData).length);
|
||||
</script>
|
||||
<script>console.log('FLOWDECK v2.4.6 — ws-split about to render, _wsInitData exists:', typeof window._wsInitData !== 'undefined');</script>
|
||||
@@ -2350,7 +2372,7 @@ console.log('FLOWDECK v2.4.6 — IIFE done, _wsInitData keys:', Object.keys(wind
|
||||
</div><!-- /ws-main -->
|
||||
|
||||
<!-- Context menu -->
|
||||
<div class="ctx-menu" x-data="_wsInitData" style="display:none"
|
||||
<div class="ctx-menu" x-data="_ctxMenuData" style="display:none"
|
||||
@click.outside="document.querySelector('.ctx-menu').style.display='none'"
|
||||
@keydown.escape="document.querySelector('.ctx-menu').style.display='none'"
|
||||
x-transition>
|
||||
@@ -2371,11 +2393,11 @@ console.log('FLOWDECK v2.4.6 — IIFE done, _wsInitData keys:', Object.keys(wind
|
||||
<div x-show="(ctxMenu.tags||[]).length === 0" style="padding:2px 14px;font-size:11px;color:var(--text-dim);">No tags</div>
|
||||
<div class="ctx-sep"></div>
|
||||
<!-- Add existing tag → sub-menu -->
|
||||
<div class="ctx-item ctx-has-sub" @click.stop="var s=document.querySelector('.ctx-tag-existing-section');s.style.display=s.style.display==='none'?'block':'none'" x-show="ctxAvailTags.length > 0">
|
||||
<div class="ctx-item ctx-has-sub" @click.stop="ctxTagExistingOpen=!ctxTagExistingOpen" x-show="ctxAvailTags.length > 0">
|
||||
<span style="flex:1;">📋 Add existing tag</span>
|
||||
<span x-text="ctxTagExistingOpen ? '▾' : '▸'"></span>
|
||||
</div>
|
||||
<div class="ctx-tag-existing-section" style="display:none;padding:0 0 4px;background:var(--bg-tertiary);border-radius:6px;margin:2px 6px;">
|
||||
<div x-show="ctxTagExistingOpen && ctxAvailTags.length > 0" style="padding:0 0 4px;background:var(--bg-tertiary);border-radius:6px;margin:2px 6px;">
|
||||
<template x-for="t in ctxAvailTags" :key="'ctx-avail'+t.id">
|
||||
<div class="ctx-item ctx-add-tag-item" @click.stop="ctxAddExistingTag(t), ctxTagExistingOpen=false">
|
||||
<span class="ctx-tag-color" :style="{background: t.color}"></span>
|
||||
|
||||
Reference in New Issue
Block a user