fix(gps): двойной путь доставки клика по маркеру — data-gps-action на корне (capture-делегирование) + placemark.events

This commit is contained in:
2026-09-23 10:04:06 +03:00
parent dadd49c15f
commit d238b005f4

View File

@@ -94,10 +94,14 @@ export function gpsMarkerHtml(marker: GpsMapMarker): string {
}
}
// data-* атрибута на корне НЕТ намеренно: делегированный обработчик ловит
// только кнопки с data-gps-action (список кластера, «Открыть задачу» в попапе),
// иначе клик по точке сразу вызывал onClick и глушил открытие попапа
return `<div style="display:flex;flex-direction:column;align-items:center;width:${layout.width}px;user-select:none;cursor:pointer;${opacity}">${body}${label}</div>`;
// Двойной путь клика: корень маркера несёт data-gps-action (проверенное
// capture-делегирование на контейнере карты) — срабатывает даже если
// placemark.events (ymaps) клик не доставляет. Маркеры с popup (точки
// трека) атрибут не получают — у них onClick нет.
const actionAttr = marker.onClick && !marker.popup
? ` data-gps-action="open:${escapeHtml(String(marker.id))}"`
: '';
return `<div${actionAttr} style="display:flex;flex-direction:column;align-items:center;width:${layout.width}px;user-select:none;cursor:pointer;${opacity}">${body}${label}</div>`;
}
/**