@@ -75,7 +75,9 @@ export type AdvancedMarkerAnchorPoint =
7575 ( typeof AdvancedMarkerAnchorPoint ) [ keyof typeof AdvancedMarkerAnchorPoint ] ;
7676
7777type AdvancedMarkerEventProps = {
78- onClick ?: ( e : google . maps . MapMouseEvent ) => void ;
78+ onClick ?: ( e : google . maps . marker . AdvancedMarkerClickEvent ) => void ;
79+ onKeyDown ?: ( e : KeyboardEvent ) => void ;
80+ onKeyUp ?: ( e : KeyboardEvent ) => void ;
7981 onMouseEnter ?: ( e : google . maps . MapMouseEvent [ 'domEvent' ] ) => void ;
8082 onMouseLeave ?: ( e : google . maps . MapMouseEvent [ 'domEvent' ] ) => void ;
8183 onDrag ?: ( e : google . maps . MapMouseEvent ) => void ;
@@ -211,6 +213,8 @@ function useAdvancedMarker(props: AdvancedMarkerProps) {
211213 const {
212214 children,
213215 onClick,
216+ onKeyDown,
217+ onKeyUp,
214218 className,
215219 onMouseEnter,
216220 onMouseLeave,
@@ -296,8 +300,8 @@ function useAdvancedMarker(props: AdvancedMarkerProps) {
296300 else marker . gmpDraggable = false ;
297301 } , [ marker , draggable , onDrag , onDragEnd , onDragStart ] ) ;
298302
299- // set gmpClickable from props (when unspecified, it's true if the onClick or one of
300- // the hover events callbacks are specified)
303+ // set gmpClickable from props (when unspecified, it's true if any interactive
304+ // event callbacks are specified)
301305 useEffect ( ( ) => {
302306 if ( ! marker ) return ;
303307
@@ -306,7 +310,11 @@ function useAdvancedMarker(props: AdvancedMarkerProps) {
306310 const gmpClickable =
307311 clickable !== undefined
308312 ? clickable
309- : Boolean ( onClick ) || Boolean ( onMouseEnter ) || Boolean ( onMouseLeave ) ;
313+ : Boolean ( onClick ) ||
314+ Boolean ( onKeyDown ) ||
315+ Boolean ( onKeyUp ) ||
316+ Boolean ( onMouseEnter ) ||
317+ Boolean ( onMouseLeave ) ;
310318
311319 // gmpClickable is only available in beta version of the
312320 // maps api (as of 2024-10-10)
@@ -319,13 +327,23 @@ function useAdvancedMarker(props: AdvancedMarkerProps) {
319327 marker . content . style . pointerEvents = gmpClickable ? 'all' : 'none' ;
320328 marker . content . style . cursor = gmpClickable && onClick ? 'pointer' : '' ;
321329 }
322- } , [ marker , clickable , onClick , onMouseEnter , onMouseLeave ] ) ;
330+ } , [
331+ marker ,
332+ clickable ,
333+ onClick ,
334+ onKeyDown ,
335+ onKeyUp ,
336+ onMouseEnter ,
337+ onMouseLeave
338+ ] ) ;
323339
324340 useMapsEventListener ( marker , 'drag' , onDrag ) ;
325341 useMapsEventListener ( marker , 'dragstart' , onDragStart ) ;
326342 useMapsEventListener ( marker , 'dragend' , onDragEnd ) ;
327343
328344 useDomEventListener ( marker , 'gmp-click' , onClick ) ;
345+ useDomEventListener ( marker , 'keydown' , onKeyDown ) ;
346+ useDomEventListener ( marker , 'keyup' , onKeyUp ) ;
329347 useDomEventListener ( marker , 'mouseenter' , onMouseEnter ) ;
330348 useDomEventListener ( marker , 'mouseleave' , onMouseLeave ) ;
331349
0 commit comments