From 4e1f0fa317513b9a3e30be2cdee408dad8465aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radim=20Vaculi=CC=81k?= Date: Mon, 16 Mar 2026 21:45:05 +0100 Subject: [PATCH] Fix: Use event delegation for confirm to survive AJAX snippet updates (#1250) Closes #1250 --- assets/plugins/features/confirm.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/assets/plugins/features/confirm.ts b/assets/plugins/features/confirm.ts index 2d929899..138a1042 100644 --- a/assets/plugins/features/confirm.ts +++ b/assets/plugins/features/confirm.ts @@ -32,8 +32,13 @@ export class ConfirmPlugin implements DatagridPlugin { onDatagridInit(datagrid: Datagrid): boolean { this.datagrid = datagrid; - const confirmElements = datagrid.el.querySelectorAll(`[${ConfirmAttribute}]:not(.ajax)`); - confirmElements.forEach(el => el.addEventListener("click", e => this.handleClick(el, e))); + datagrid.el.addEventListener("click", e => { + const target = e.target as HTMLElement; + const confirmEl = target.closest(`[${ConfirmAttribute}]:not(.ajax)`); + if (confirmEl) { + this.handleClick(confirmEl, e); + } + }); datagrid.ajax.addEventListener("interact", e => { const target = e.detail.element;