diff --git a/public/app/features/canvas/runtime/element.tsx b/public/app/features/canvas/runtime/element.tsx index 74852198ae9..19d3d1af267 100644 --- a/public/app/features/canvas/runtime/element.tsx +++ b/public/app/features/canvas/runtime/element.tsx @@ -486,6 +486,20 @@ export class ElementState implements LayerElement { }; onElementClick = (event: React.MouseEvent) => { + this.onTooltipCallback(); + }; + + onElementKeyDown = (event: React.KeyboardEvent) => { + if ( + event.key === 'Enter' && + (event.currentTarget instanceof HTMLElement || event.currentTarget instanceof SVGElement) + ) { + const scene = this.getScene(); + scene?.select({ targets: [event.currentTarget] }); + } + }; + + onTooltipCallback = () => { const scene = this.getScene(); if (scene?.tooltipCallback && scene.tooltip?.anchorPoint) { scene.tooltipCallback({ @@ -503,14 +517,15 @@ export class ElementState implements LayerElement { const isSelected = div && scene && scene.selecto && scene.selecto.getSelectedTargets().includes(div); return ( - // TODO: fix keyboard a11y - // eslint-disable-next-line jsx-a11y/click-events-have-key-events
this.handleMouseEnter(e, isSelected)} onMouseLeave={!scene?.isEditingEnabled ? this.handleMouseLeave : undefined} onClick={!scene?.isEditingEnabled ? this.onElementClick : undefined} + onKeyDown={!scene?.isEditingEnabled ? this.onElementKeyDown : undefined} + role="button" + tabIndex={0} >