fix(gps): двойной путь доставки клика по маркеру — data-gps-action на корне (capture-делегирование) + placemark.events
This commit is contained in:
@@ -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>`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user