fix(wishes): TypeError в toggleForm — lucide заменял <i> на <svg>

Кнопка «Поделиться идеей» падала: btn.querySelector('i') возвращал null, т.к. lucide.createIcons
при первом рендере заменяет <i data-lucide> на <svg>. Обернул иконку в стабильный
контейнер #wq-new-ic и пере-вставляю свежий <i> в его innerHTML перед icons() (с guard).

Headless-смоук toggleForm 5/5 (open/close, смена иконки chevron-up/plus, без throw).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-23 23:02:54 +03:00
parent 3c45c606bf
commit db1db68488
+4 -2
View File
@@ -140,7 +140,7 @@
<div class="page-sub" id="w-sub">Есть идея, как сделать систему лучше? Расскажите — мы прочитаем и ответим.</div> <div class="page-sub" id="w-sub">Есть идея, как сделать систему лучше? Расскажите — мы прочитаем и ответим.</div>
</div> </div>
<button class="wq-new-btn" id="wq-new-btn" onclick="toggleForm()"> <button class="wq-new-btn" id="wq-new-btn" onclick="toggleForm()">
<i data-lucide="plus" style="width:15px;height:15px"></i> <span id="wq-new-lbl">Поделиться идеей</span> <span id="wq-new-ic"><i data-lucide="plus" style="width:15px;height:15px"></i></span> <span id="wq-new-lbl">Поделиться идеей</span>
</button> </button>
</div> </div>
@@ -224,7 +224,9 @@
const btn = document.getElementById('wq-new-btn'); const btn = document.getElementById('wq-new-btn');
btn.classList.toggle('open', _formOpen); btn.classList.toggle('open', _formOpen);
document.getElementById('wq-new-lbl').textContent = _formOpen ? 'Свернуть' : 'Поделиться идеей'; document.getElementById('wq-new-lbl').textContent = _formOpen ? 'Свернуть' : 'Поделиться идеей';
btn.querySelector('i').setAttribute('data-lucide', _formOpen ? 'chevron-up' : 'plus'); // lucide заменяет <i> на <svg> при рендере, поэтому пере-вставляем свежий <i> в контейнер.
const ic = document.getElementById('wq-new-ic');
if (ic) ic.innerHTML = `<i data-lucide="${_formOpen ? 'chevron-up' : 'plus'}" style="width:15px;height:15px"></i>`;
icons(); icons();
if (_formOpen) setTimeout(() => document.getElementById('wf-title').focus(), 80); if (_formOpen) setTimeout(() => document.getElementById('wf-title').focus(), 80);
} }