diff --git a/src/features/preferences/renderer/preference-navigation/navigate-to-preference-tab/navigate-to-preference-tab.injectable.ts b/src/features/preferences/renderer/preference-navigation/navigate-to-preference-tab/navigate-to-preference-tab.injectable.ts index f4e34267e8..de5fbd46b4 100644 --- a/src/features/preferences/renderer/preference-navigation/navigate-to-preference-tab/navigate-to-preference-tab.injectable.ts +++ b/src/features/preferences/renderer/preference-navigation/navigate-to-preference-tab/navigate-to-preference-tab.injectable.ts @@ -6,14 +6,16 @@ import { getInjectable } from "@ogre-tools/injectable"; import { navigateToRouteInjectionToken } from "../../../../../common/front-end-routing/navigate-to-route-injection-token"; import preferencesRouteInjectable from "../../../common/preferences-route.injectable"; -const navigateToPreferenceTabInjectable = getInjectable({ - id: "navigate-to-preference-tab-2", +export type NavigateToPreferenceTab = (tabId: string) => void; - instantiate: (di) => { +const navigateToPreferenceTabInjectable = getInjectable({ + id: "navigate-to-preference-tab", + + instantiate: (di): NavigateToPreferenceTab => { const navigateToRoute = di.inject(navigateToRouteInjectionToken); const route = di.inject(preferencesRouteInjectable); - return (preferenceTabId: string) => { + return (preferenceTabId) => { navigateToRoute(route, { withoutAffectingBackButton: true, parameters: { preferenceTabId }, diff --git a/src/features/preferences/renderer/preference-navigation/preferences-navigation-tab.tsx b/src/features/preferences/renderer/preference-navigation/preferences-navigation-tab.tsx index 1ee75298d0..fb8a7f3f7a 100644 --- a/src/features/preferences/renderer/preference-navigation/preferences-navigation-tab.tsx +++ b/src/features/preferences/renderer/preference-navigation/preferences-navigation-tab.tsx @@ -3,7 +3,6 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { Tab } from "../../../../renderer/components/tabs"; -import navigateToPreferenceTabInjectable from "./navigate-to-preference-tab/navigate-to-preference-tab.injectable"; import { withInjectables } from "@ogre-tools/injectable-react"; import { observer } from "mobx-react"; import type { PreferenceTab } from "../preference-items/preference-item-injection-token"; @@ -12,7 +11,6 @@ import preferenceTabIsActiveInjectable from "./navigate-to-preference-tab/prefer import React from "react"; interface Dependencies { - navigateToTab: (tabId: string) => void; tabIsActive: IComputedValue; } @@ -20,23 +18,21 @@ interface PreferenceNavigationTabProps { tab: PreferenceTab; } -const NonInjectedPreferencesNavigationTab = observer(({ navigateToTab, tabIsActive, tab } : Dependencies & PreferenceNavigationTabProps) => ( +const NonInjectedPreferencesNavigationTab = observer(({ + tabIsActive, + tab, +}: Dependencies & PreferenceNavigationTabProps) => ( navigateToTab(tab.pathId)} active={tabIsActive.get()} label={tab.label} data-preference-tab-link-test={tab.pathId} + value={tab.pathId} /> )); -export const PreferencesNavigationTab = withInjectables( - NonInjectedPreferencesNavigationTab, - - { - getProps: (di, props) => ({ - navigateToTab: di.inject(navigateToPreferenceTabInjectable), - tabIsActive: di.inject(preferenceTabIsActiveInjectable, props.tab.pathId), - ...props, - }), - }, -); +export const PreferencesNavigationTab = withInjectables(NonInjectedPreferencesNavigationTab, { + getProps: (di, props) => ({ + ...props, + tabIsActive: di.inject(preferenceTabIsActiveInjectable, props.tab.pathId), + }), +}); diff --git a/src/features/preferences/renderer/preference-navigation/preferences-navigation.tsx b/src/features/preferences/renderer/preference-navigation/preferences-navigation.tsx index 8d54e69d09..861dc1fbff 100644 --- a/src/features/preferences/renderer/preference-navigation/preferences-navigation.tsx +++ b/src/features/preferences/renderer/preference-navigation/preferences-navigation.tsx @@ -16,26 +16,33 @@ import { compositeHasDescendant } from "../../../../common/utils/composite/compo import type { PreferenceTabsRoot } from "../preference-items/preference-tab-root"; import { Icon } from "../../../../renderer/components/icon"; import { checkThatAllDiscriminablesAreExhausted } from "../../../../common/utils/composable-responsibilities/discriminable/discriminable"; +import type { NavigateToPreferenceTab } from "./navigate-to-preference-tab/navigate-to-preference-tab.injectable"; +import navigateToPreferenceTabInjectable from "./navigate-to-preference-tab/navigate-to-preference-tab.injectable"; interface Dependencies { composite: IComputedValue>; + navigateToPreferenceTab: NavigateToPreferenceTab; } -const NonInjectedPreferencesNavigation = observer(({ composite }: Dependencies) => ( - +const NonInjectedPreferencesNavigation = observer(({ + composite, + navigateToPreferenceTab, +}: Dependencies) => ( + + className="flex column" + scrollable={false} + onChange={navigateToPreferenceTab} + > {toNavigationHierarchy(composite.get())} )); -export const PreferencesNavigation = withInjectables( - NonInjectedPreferencesNavigation, - - { - getProps: (di) => ({ - composite: di.inject(preferencesCompositeInjectable), - }), - }, -); +export const PreferencesNavigation = withInjectables(NonInjectedPreferencesNavigation, { + getProps: (di) => ({ + composite: di.inject(preferencesCompositeInjectable), + navigateToPreferenceTab: di.inject(navigateToPreferenceTabInjectable), + }), +}); const toNavigationHierarchy = (composite: Composite) => { const value = composite.value; diff --git a/src/renderer/components/layout/tab-layout-2.tsx b/src/renderer/components/layout/tab-layout-2.tsx index a0348383c1..935e4b9368 100644 --- a/src/renderer/components/layout/tab-layout-2.tsx +++ b/src/renderer/components/layout/tab-layout-2.tsx @@ -43,6 +43,7 @@ export const TabLayout = observer( active={active} data-is-active-test={active} data-testid={`tab-link-for-${registration.id}`} + value={undefined} /> ); })} diff --git a/src/renderer/components/layout/tab-layout.tsx b/src/renderer/components/layout/tab-layout.tsx index 19f8db4d6d..07684ef28d 100644 --- a/src/renderer/components/layout/tab-layout.tsx +++ b/src/renderer/components/layout/tab-layout.tsx @@ -39,7 +39,7 @@ export const TabLayout = observer(({ className, contentClass, tabs = [], childre return (
{hasTabs && ( - navigate(url)}> + center onChange={(url) => navigate(url)}> {tabs.map(({ title, routePath, url = routePath, exact }) => (