From 476f2f85517e787b9eb3ee951d983f6debf5bfdf Mon Sep 17 00:00:00 2001 From: Botzy Date: Wed, 26 Mar 2025 19:00:55 +0200 Subject: [PATCH] feat(useVerticalSpatialNav): added hook for enabling spatial nav on vertical navigation --- src/components/MainNavBars/MainNavBars.tsx | 10 +++- .../NavBar/VerticalNavBar/VerticalNavBar.js | 6 +- .../useSpatialNavigation.tsx | 56 +++++++++++++++++++ 3 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 src/services/SpatialNavigation/useSpatialNavigation.tsx diff --git a/src/components/MainNavBars/MainNavBars.tsx b/src/components/MainNavBars/MainNavBars.tsx index 43d08f5c8..fed1668a2 100644 --- a/src/components/MainNavBars/MainNavBars.tsx +++ b/src/components/MainNavBars/MainNavBars.tsx @@ -1,9 +1,10 @@ // Copyright (C) 2017-2023 Smart code 203358507 -import React, { memo } from 'react'; +import React, { memo, useEffect } from 'react'; import classnames from 'classnames'; import { VerticalNavBar, HorizontalNavBar } from 'stremio/components/NavBar'; import styles from './MainNavBars.less'; +import { useGamepad, useVerticalSpatialNavigation } from 'stremio/services'; const TABS = [ { id: 'board', label: 'Board', icon: 'home', href: '#/' }, @@ -21,7 +22,13 @@ type Props = { children?: React.ReactNode, }; +const GAMEPAD_HANDLER_ID = 'vertical-nav'; + const MainNavBars = memo(({ className, route, query, children }: Props) => { + const navRef = React.useRef(null); + + useVerticalSpatialNavigation(navRef, GAMEPAD_HANDLER_ID); + return (
{ navMenu={true} /> { +const VerticalNavBar = React.memo(React.forwardRef(({ className, selected, tabs }, ref) => { const { t } = useTranslation(); return ( -