Fix edit button for text-node targets

This commit is contained in:
Victor Andersson
2025-11-09 22:05:01 +01:00
parent c189fd053c
commit 968150b074

View File

@@ -137,7 +137,7 @@
{% endif %}
{% if can_change %}
<button type="button"
onclick="window.claimsOpenEdit('{{ claim.id }}')"
data-open-edit="{{ claim.id }}"
class="rounded-full border border-gray-300 px-3 py-1 text-xs font-semibold text-gray-700 transition hover:bg-gray-100">
{% trans "Redigera" %}
</button>
@@ -437,7 +437,15 @@ document.addEventListener("DOMContentLoaded", () => {
const emptyState = document.querySelector("[data-claim-empty]");
const panels = Array.from(document.querySelectorAll("[data-edit-panel]"));
window.claimsOpenEdit = (id) => {
const normalizeTarget = (target) => {
let node = target;
while (node && node.nodeType !== 1) {
node = node.parentElement;
}
return node;
};
const openPanel = (id) => {
const panel = document.querySelector(`[data-edit-panel="${id}"]`);
if (!panel) return;
panel.classList.remove("hidden");
@@ -452,7 +460,18 @@ document.addEventListener("DOMContentLoaded", () => {
};
document.addEventListener("click", (event) => {
const closeTrigger = event.target.closest("[data-close-edit]");
const normalizedTarget = normalizeTarget(event.target);
if (!normalizedTarget) {
return;
}
const openTrigger = normalizedTarget.closest("[data-open-edit]");
if (openTrigger) {
event.preventDefault();
openPanel(openTrigger.dataset.openEdit);
return;
}
const closeTrigger = normalizedTarget.closest("[data-close-edit]");
if (closeTrigger) {
const panel = closeTrigger.closest("[data-edit-panel]");
if (panel) {