diff --git a/CHANGELOG-cat-435.md b/CHANGELOG-cat-435.md new file mode 100644 index 0000000000..d5494f0778 --- /dev/null +++ b/CHANGELOG-cat-435.md @@ -0,0 +1 @@ +- Avoid page scrolling from using arrow keys on vitessce visualization. diff --git a/context/app/static/js/components/detailPage/visualization/VisualizationTracker/hooks.ts b/context/app/static/js/components/detailPage/visualization/VisualizationTracker/hooks.ts index 3685a128a2..cdf7547dab 100644 --- a/context/app/static/js/components/detailPage/visualization/VisualizationTracker/hooks.ts +++ b/context/app/static/js/components/detailPage/visualization/VisualizationTracker/hooks.ts @@ -32,6 +32,8 @@ export function useVitessceEventMetadata() { return formatEventCategoryAndLabel('Unknown', location); } +const arrowKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']; + export function useVisualizationTracker() { const { category, label } = useVitessceEventMetadata(); // Track when the visualization is first mounted @@ -66,6 +68,11 @@ export function useVisualizationTracker() { const trackKeyDown: React.KeyboardEventHandler = useEventCallback((e) => { const target = getNearestIdentifier(e.target as HTMLElement); const key = e.key === ' ' ? 'Space' : e.key; + // Prevent default scrolling behavior of arrow keys + if (arrowKeys.includes(key)) { + trackVitessceAction(`${key} ${target}`); + e.preventDefault(); + } if (!target || modifierKeys.includes(key)) return; if (typingTimeout.current) { clearTimeout(typingTimeout.current);