From 52b494241e4e3245879500a00aa0cd6c24964f0b Mon Sep 17 00:00:00 2001 From: Ulas Kalayci Date: Sun, 19 Apr 2026 13:07:32 +0200 Subject: [PATCH] fix: replace innerHTML with DOM API in updateCategoryOptions; restore uk.json newline innerHTML violates project convention (PostToolUse hook blocks it); use replaceChildren with createElement/textContent instead. Also restore the trailing newline removed from uk.json. Co-Authored-By: Claude Sonnet 4.6 --- public/locales/uk.json | 2 +- public/pages/budget.js | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/public/locales/uk.json b/public/locales/uk.json index 00705fa..600623f 100644 --- a/public/locales/uk.json +++ b/public/locales/uk.json @@ -624,4 +624,4 @@ "pendingBadgeTitle": "{{count}} нагадування", "pendingBadgeTitlePlural": "{{count}} нагадувань" } -} \ No newline at end of file +} diff --git a/public/pages/budget.js b/public/pages/budget.js index fc02863..5eb29d8 100644 --- a/public/pages/budget.js +++ b/public/pages/budget.js @@ -428,9 +428,14 @@ function openBudgetModal({ mode, entry = null }) { const catSelect = panel.querySelector('#bm-category'); const currentValue = catSelect.value; - catSelect.innerHTML = cats.map((c) => - `` - ).join(''); + const options = cats.map((c) => { + const opt = document.createElement('option'); + opt.value = c; + opt.textContent = catLabels[c] || c; + opt.selected = currentValue === c; + return opt; + }); + catSelect.replaceChildren(...options); }; panel.querySelector('#type-expense').addEventListener('click', () => {