mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Extract top menu item for navigating to home as OCP
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi> Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
parent
43443759dd
commit
7eacdd164b
@ -0,0 +1,23 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
import topBarItemInjectionToken from "../top-bar-item-injection-token";
|
||||||
|
import { NavigationToHome } from "./navigation-to-home";
|
||||||
|
|
||||||
|
const navigationToHomeTopBarItemInjectable = getInjectable({
|
||||||
|
id: "navigation-to-home-top-bar-item",
|
||||||
|
|
||||||
|
instantiate: () => ({
|
||||||
|
id: "navigation-to-home",
|
||||||
|
isShown: computed(() => true),
|
||||||
|
orderNumber: 20,
|
||||||
|
Component: NavigationToHome,
|
||||||
|
}),
|
||||||
|
|
||||||
|
injectionToken: topBarItemInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default navigationToHomeTopBarItemInjectable;
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import React from "react";
|
||||||
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
|
import type { IComputedValue } from "mobx";
|
||||||
|
import { Icon } from "../../../../icon";
|
||||||
|
import navigateToCatalogInjectable from "../../../../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
|
||||||
|
import routeIsActiveInjectable from "../../../../../routes/route-is-active.injectable";
|
||||||
|
import catalogRouteInjectable from "../../../../../../common/front-end-routing/routes/catalog/catalog-route.injectable";
|
||||||
|
import { observer } from "mobx-react";
|
||||||
|
|
||||||
|
interface Dependencies {
|
||||||
|
catalogRouteIsActive: IComputedValue<boolean>;
|
||||||
|
goHome: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
const NonInjectedNavigationToHome = observer(({
|
||||||
|
catalogRouteIsActive,
|
||||||
|
goHome,
|
||||||
|
}: Dependencies) => (
|
||||||
|
<Icon
|
||||||
|
data-testid="home-button"
|
||||||
|
material="home"
|
||||||
|
onClick={goHome}
|
||||||
|
disabled={catalogRouteIsActive.get()}
|
||||||
|
/>
|
||||||
|
));
|
||||||
|
|
||||||
|
export const NavigationToHome = withInjectables<Dependencies>(
|
||||||
|
NonInjectedNavigationToHome,
|
||||||
|
|
||||||
|
{
|
||||||
|
getProps: (di) => ({
|
||||||
|
catalogRouteIsActive: di.inject(
|
||||||
|
routeIsActiveInjectable,
|
||||||
|
di.inject(catalogRouteInjectable),
|
||||||
|
),
|
||||||
|
|
||||||
|
goHome: di.inject(navigateToCatalogInjectable),
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
);
|
||||||
@ -14,7 +14,6 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
|||||||
import type { TopBarRegistration } from "./top-bar-registration";
|
import type { TopBarRegistration } from "./top-bar-registration";
|
||||||
import isLinuxInjectable from "../../../../common/vars/is-linux.injectable";
|
import isLinuxInjectable from "../../../../common/vars/is-linux.injectable";
|
||||||
import isWindowsInjectable from "../../../../common/vars/is-windows.injectable";
|
import isWindowsInjectable from "../../../../common/vars/is-windows.injectable";
|
||||||
import routeIsActiveInjectable from "../../../routes/route-is-active.injectable";
|
|
||||||
import { UpdateButton } from "../../../../features/application-update/child-features/application-update-using-top-bar/renderer/update-button";
|
import { UpdateButton } from "../../../../features/application-update/child-features/application-update-using-top-bar/renderer/update-button";
|
||||||
import topBarPrevEnabledInjectable from "./prev-enabled.injectable";
|
import topBarPrevEnabledInjectable from "./prev-enabled.injectable";
|
||||||
import topBarNextEnabledInjectable from "./next-enabled.injectable";
|
import topBarNextEnabledInjectable from "./next-enabled.injectable";
|
||||||
@ -30,8 +29,6 @@ import welcomeRouteInjectable from "../../../../common/front-end-routing/routes/
|
|||||||
import navigateToWelcomeInjectable from "../../../../common/front-end-routing/routes/welcome/navigate-to-welcome.injectable";
|
import navigateToWelcomeInjectable from "../../../../common/front-end-routing/routes/welcome/navigate-to-welcome.injectable";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
navigateToWelcomePage: () => void;
|
|
||||||
welcomeRouteIsActive: IComputedValue<boolean>;
|
|
||||||
items: IComputedValue<TopBarRegistration[]>;
|
items: IComputedValue<TopBarRegistration[]>;
|
||||||
items2: IComputedValue<TopBarItem[]>;
|
items2: IComputedValue<TopBarItem[]>;
|
||||||
isWindows: boolean;
|
isWindows: boolean;
|
||||||
@ -49,10 +46,6 @@ interface Dependencies {
|
|||||||
const NonInjectedTopBar = observer(({
|
const NonInjectedTopBar = observer(({
|
||||||
items,
|
items,
|
||||||
items2,
|
items2,
|
||||||
navigateToCatalog,
|
|
||||||
catalogRouteIsActive,
|
|
||||||
navigateToWelcomePage,
|
|
||||||
welcomeRouteIsActive,
|
|
||||||
isWindows,
|
isWindows,
|
||||||
isLinux,
|
isLinux,
|
||||||
prevEnabled,
|
prevEnabled,
|
||||||
@ -66,10 +59,6 @@ const NonInjectedTopBar = observer(({
|
|||||||
}: Dependencies) => {
|
}: Dependencies) => {
|
||||||
const elem = useRef<HTMLDivElement | null>(null);
|
const elem = useRef<HTMLDivElement | null>(null);
|
||||||
|
|
||||||
const goHome = () => {
|
|
||||||
navigateToWelcomePage();
|
|
||||||
};
|
|
||||||
|
|
||||||
const windowSizeToggle = (evt: React.MouseEvent) => {
|
const windowSizeToggle = (evt: React.MouseEvent) => {
|
||||||
if (elem.current === evt.target) {
|
if (elem.current === evt.target) {
|
||||||
toggleMaximizeWindow();
|
toggleMaximizeWindow();
|
||||||
@ -90,12 +79,6 @@ const NonInjectedTopBar = observer(({
|
|||||||
return <Component key={item.id} />;
|
return <Component key={item.id} />;
|
||||||
})}
|
})}
|
||||||
|
|
||||||
<Icon
|
|
||||||
data-testid="home-button"
|
|
||||||
material="home"
|
|
||||||
onClick={goHome}
|
|
||||||
disabled={welcomeRouteIsActive.get()}
|
|
||||||
/>
|
|
||||||
<Icon
|
<Icon
|
||||||
data-testid="history-back"
|
data-testid="history-back"
|
||||||
material="arrow_back"
|
material="arrow_back"
|
||||||
@ -173,19 +156,12 @@ const renderRegisteredItems = (items: TopBarRegistration[]) => (
|
|||||||
|
|
||||||
export const TopBar = withInjectables<Dependencies>(NonInjectedTopBar, {
|
export const TopBar = withInjectables<Dependencies>(NonInjectedTopBar, {
|
||||||
getProps: (di) => ({
|
getProps: (di) => ({
|
||||||
navigateToWelcomePage: di.inject(navigateToWelcomeInjectable),
|
|
||||||
items: di.inject(topBarItemsInjectable),
|
items: di.inject(topBarItemsInjectable),
|
||||||
items2: di.inject(topBarItems2Injectable),
|
items2: di.inject(topBarItems2Injectable),
|
||||||
isLinux: di.inject(isLinuxInjectable),
|
isLinux: di.inject(isLinuxInjectable),
|
||||||
isWindows: di.inject(isWindowsInjectable),
|
isWindows: di.inject(isWindowsInjectable),
|
||||||
prevEnabled: di.inject(topBarPrevEnabledInjectable),
|
prevEnabled: di.inject(topBarPrevEnabledInjectable),
|
||||||
nextEnabled: di.inject(topBarNextEnabledInjectable),
|
nextEnabled: di.inject(topBarNextEnabledInjectable),
|
||||||
|
|
||||||
welcomeRouteIsActive: di.inject(
|
|
||||||
routeIsActiveInjectable,
|
|
||||||
di.inject(welcomeRouteInjectable),
|
|
||||||
),
|
|
||||||
|
|
||||||
goBack: di.inject(goBackInjectable),
|
goBack: di.inject(goBackInjectable),
|
||||||
goForward: di.inject(goForwardInjectable),
|
goForward: di.inject(goForwardInjectable),
|
||||||
closeWindow: di.inject(closeWindowInjectable),
|
closeWindow: di.inject(closeWindowInjectable),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user