mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Adjust to latest master changes
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
8c2591ed86
commit
47cbb248bb
@ -3,7 +3,7 @@
|
|||||||
exports[`preferences - navigation to extension specific preferences given in preferences, when rendered given extension with registered tab shows extension tab in general area 1`] = `
|
exports[`preferences - navigation to extension specific preferences given in preferences, when rendered given extension with registered tab shows extension tab in general area 1`] = `
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center"
|
class="Tab flex gaps align-center"
|
||||||
data-testid="tab-link-for-extension-registered-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-registered-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@ -107,7 +107,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center active"
|
class="Tab flex gaps align-center active"
|
||||||
data-testid="tab-link-for-extension-registered-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-registered-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@ -296,7 +296,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center active"
|
class="Tab flex gaps align-center active"
|
||||||
data-testid="tab-link-for-extension-registered-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-registered-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@ -308,7 +308,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center active"
|
class="Tab flex gaps align-center active"
|
||||||
data-testid="tab-link-for-extension-duplicated-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-duplicated-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@ -497,7 +497,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center active"
|
class="Tab flex gaps align-center active"
|
||||||
data-testid="tab-link-for-extension-registered-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-registered-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@ -509,7 +509,7 @@ exports[`preferences - navigation to extension specific preferences given in pre
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center active"
|
class="Tab flex gaps align-center active"
|
||||||
data-testid="tab-link-for-extension-duplicated-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-duplicated-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@ -2247,7 +2247,7 @@ exports[`preferences - navigation to extension specific preferences when navigat
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center active"
|
class="Tab flex gaps align-center active"
|
||||||
data-testid="tab-link-for-extension-duplicated-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-duplicated-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
@ -2436,7 +2436,7 @@ exports[`preferences - navigation to extension specific preferences when navigat
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="Tab flex gaps align-center active"
|
class="Tab flex gaps align-center active"
|
||||||
data-testid="tab-link-for-extension-duplicated-tab-page-id-1-nav-item-metrics-extension-tab"
|
data-testid="tab-link-for-extension-duplicated-tab-page-id-nav-item-metrics-extension-tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
|
|||||||
@ -165,7 +165,7 @@ describe("preferences - navigation to extension specific preferences", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("shows extension tab in general area", () => {
|
it("shows extension tab in general area", () => {
|
||||||
const actual = rendered.getByTestId("tab-link-for-extension-registered-tab-page-id-1-nav-item-metrics-extension-tab");
|
const actual = rendered.getByTestId("tab-link-for-extension-registered-tab-page-id-nav-item-metrics-extension-tab");
|
||||||
|
|
||||||
expect(actual).toMatchSnapshot();
|
expect(actual).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
@ -178,7 +178,7 @@ describe("preferences - navigation to extension specific preferences", () => {
|
|||||||
|
|
||||||
describe("when navigating to specific extension tab", () => {
|
describe("when navigating to specific extension tab", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
applicationBuilder.preferences.navigation.click("extension-registered-tab-page-id-1-nav-item-metrics-extension-tab");
|
applicationBuilder.preferences.navigation.click("extension-registered-tab-page-id-nav-item-metrics-extension-tab");
|
||||||
});
|
});
|
||||||
it("renders", () => {
|
it("renders", () => {
|
||||||
expect(rendered.container).toMatchSnapshot();
|
expect(rendered.container).toMatchSnapshot();
|
||||||
@ -205,8 +205,8 @@ describe("preferences - navigation to extension specific preferences", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("shows each of registered tabs in general area", () => {
|
it("shows each of registered tabs in general area", () => {
|
||||||
const helloTab = rendered.getByTestId("tab-link-for-extension-hello-world-tab-page-id-1-nav-item-hello-extension-tab");
|
const helloTab = rendered.getByTestId("tab-link-for-extension-hello-world-tab-page-id-nav-item-hello-extension-tab");
|
||||||
const logsTab = rendered.getByTestId("tab-link-for-extension-hello-world-tab-page-id-1-nav-item-logs-extension-tab");
|
const logsTab = rendered.getByTestId("tab-link-for-extension-hello-world-tab-page-id-nav-item-logs-extension-tab");
|
||||||
|
|
||||||
expect(helloTab).toBeInTheDocument();
|
expect(helloTab).toBeInTheDocument();
|
||||||
expect(logsTab).toBeInTheDocument();
|
expect(logsTab).toBeInTheDocument();
|
||||||
@ -223,20 +223,20 @@ describe("preferences - navigation to extension specific preferences", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("shows tab from the first extension", () => {
|
it("shows tab from the first extension", () => {
|
||||||
const actual = rendered.getByTestId("tab-link-for-extension-registered-tab-page-id-1-nav-item-metrics-extension-tab");
|
const actual = rendered.getByTestId("tab-link-for-extension-registered-tab-page-id-nav-item-metrics-extension-tab");
|
||||||
|
|
||||||
expect(actual).toBeInTheDocument();
|
expect(actual).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("shows tab from the second extension", () => {
|
it("shows tab from the second extension", () => {
|
||||||
const actual = rendered.getByTestId("tab-link-for-extension-duplicated-tab-page-id-1-nav-item-metrics-extension-tab");
|
const actual = rendered.getByTestId("tab-link-for-extension-duplicated-tab-page-id-nav-item-metrics-extension-tab");
|
||||||
|
|
||||||
expect(actual).toBeInTheDocument();
|
expect(actual).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when navigating to first extension tab", () => {
|
describe("when navigating to first extension tab", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
applicationBuilder.preferences.navigation.click("extension-registered-tab-page-id-1-nav-item-metrics-extension-tab");
|
applicationBuilder.preferences.navigation.click("extension-registered-tab-page-id-nav-item-metrics-extension-tab");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("renders", () => {
|
it("renders", () => {
|
||||||
@ -258,7 +258,7 @@ describe("preferences - navigation to extension specific preferences", () => {
|
|||||||
|
|
||||||
describe("when navigating to second extension tab", () => {
|
describe("when navigating to second extension tab", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
applicationBuilder.preferences.navigation.click("extension-duplicated-tab-page-id-1-nav-item-metrics-extension-tab");
|
applicationBuilder.preferences.navigation.click("extension-duplicated-tab-page-id-nav-item-metrics-extension-tab");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("renders", () => {
|
it("renders", () => {
|
||||||
|
|||||||
@ -11,8 +11,8 @@ import { type DiRender, renderFor } from "../../test-utils/renderFor";
|
|||||||
import { Extensions } from "../extensions";
|
import { Extensions } from "../extensions";
|
||||||
import rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable";
|
import rendererExtensionsInjectable from "../../../../extensions/renderer-extensions.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import currentPathParametersInjectable from "../../../routes/current-path-parameters.injectable";
|
|
||||||
import { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
import { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
||||||
|
import routePathParametersInjectable from "../../../routes/route-path-parameters.injectable";
|
||||||
|
|
||||||
class SomeTestExtension extends LensRendererExtension {
|
class SomeTestExtension extends LensRendererExtension {
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -87,7 +87,7 @@ describe("<Extensions/>", () => {
|
|||||||
render = renderFor(di);
|
render = renderFor(di);
|
||||||
|
|
||||||
di.override(rendererExtensionsInjectable, () => computed(() => [new SomeTestExtension()]));
|
di.override(rendererExtensionsInjectable, () => computed(() => [new SomeTestExtension()]));
|
||||||
di.override(currentPathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id" })));
|
di.override(routePathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id" })));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("renders", () => {
|
it("renders", () => {
|
||||||
@ -116,7 +116,7 @@ describe("<Extensions/>", () => {
|
|||||||
|
|
||||||
describe("when tabId param is passed and extension has same showInPreferencesTab param", () => {
|
describe("when tabId param is passed and extension has same showInPreferencesTab param", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
di.override(currentPathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id", tabId: "metircs-extension-tab" })));
|
di.override(routePathParametersInjectable, () => computed(() => ({ extensionId: "some-test-extension-id", tabId: "metircs-extension-tab" })));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does render related preferences for specific tab", () => {
|
it("does render related preferences for specific tab", () => {
|
||||||
|
|||||||
@ -34,6 +34,7 @@ const extensionPreferenceItemRegistratorInjectable = getInjectable({
|
|||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: registration.id || id,
|
id: registration.id || id,
|
||||||
title: registration.title,
|
title: registration.title,
|
||||||
|
extension,
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
Hint: registration.components.Hint,
|
Hint: registration.components.Hint,
|
||||||
|
|||||||
@ -4,15 +4,17 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
|
import extensionPreferencesRouteInjectable from "../../../common/front-end-routing/routes/preferences/extension/extension-preferences-route.injectable";
|
||||||
import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable";
|
import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable";
|
||||||
import currentPathParametersInjectable from "../../routes/current-path-parameters.injectable";
|
import routePathParametersInjectable from "../../routes/route-path-parameters.injectable";
|
||||||
import { getExtensionPreferenceItems } from "./get-extension-preference-items";
|
import { getExtensionPreferenceItems } from "./get-extension-preference-items";
|
||||||
|
|
||||||
const extensionPreferencesModelInjectable = getInjectable({
|
const extensionPreferencesModelInjectable = getInjectable({
|
||||||
id: "extension-preferences-model",
|
id: "extension-preferences-model",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const pathParameters = di.inject(currentPathParametersInjectable);
|
const route = di.inject(extensionPreferencesRouteInjectable);
|
||||||
|
const pathParameters = di.inject(routePathParametersInjectable, route);
|
||||||
const extensions = di.inject(rendererExtensionsInjectable);
|
const extensions = di.inject(rendererExtensionsInjectable);
|
||||||
|
|
||||||
return computed(() => {
|
return computed(() => {
|
||||||
|
|||||||
@ -13,28 +13,28 @@ import type { LensRendererExtension } from "../../../../extensions/lens-renderer
|
|||||||
import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token";
|
import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token";
|
||||||
import { pipeline } from "@ogre-tools/fp";
|
import { pipeline } from "@ogre-tools/fp";
|
||||||
import extensionPreferencesRouteInjectable from "../../../../common/front-end-routing/routes/preferences/extension/extension-preferences-route.injectable";
|
import extensionPreferencesRouteInjectable from "../../../../common/front-end-routing/routes/preferences/extension/extension-preferences-route.injectable";
|
||||||
import currentPathParametersInjectable from "../../../routes/current-path-parameters.injectable";
|
|
||||||
import navigateToExtensionPreferencesInjectable from "../../../../common/front-end-routing/routes/preferences/extension/navigate-to-extension-preferences.injectable";
|
import navigateToExtensionPreferencesInjectable from "../../../../common/front-end-routing/routes/preferences/extension/navigate-to-extension-preferences.injectable";
|
||||||
import type { LensExtension } from "../../../../extensions/lens-extension";
|
import type { LensExtension } from "../../../../extensions/lens-extension";
|
||||||
|
import routePathParametersInjectable from "../../../routes/route-path-parameters.injectable";
|
||||||
|
|
||||||
const extensionSpecificTabNavigationItemRegistratorInjectable = getInjectable({
|
const extensionSpecificTabNavigationItemRegistratorInjectable = getInjectable({
|
||||||
id: "extension-specific-tab-preferences-navigation-items",
|
id: "extension-specific-tab-preferences-navigation-items",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
return (ext: LensExtension, extensionInstallationCount) => {
|
return (ext: LensExtension) => {
|
||||||
const extension = ext as LensRendererExtension;
|
const extension = ext as LensRendererExtension;
|
||||||
const navigateToExtensionPreferences = di.inject(
|
const navigateToExtensionPreferences = di.inject(
|
||||||
navigateToExtensionPreferencesInjectable,
|
navigateToExtensionPreferencesInjectable,
|
||||||
);
|
);
|
||||||
const route = di.inject(extensionPreferencesRouteInjectable);
|
const route = di.inject(extensionPreferencesRouteInjectable);
|
||||||
const routeIsActive = di.inject(routeIsActiveInjectable, route);
|
const routeIsActive = di.inject(routeIsActiveInjectable, route);
|
||||||
const pathParameters = di.inject(currentPathParametersInjectable);
|
const pathParameters = di.inject(routePathParametersInjectable, route);
|
||||||
|
|
||||||
const injectables = pipeline(
|
return pipeline(
|
||||||
extension.appPreferenceTabs,
|
extension.appPreferenceTabs,
|
||||||
|
|
||||||
map((tab) => {
|
map((tab) => {
|
||||||
const id = `extension-${extension.sanitizedExtensionId}-${extensionInstallationCount}-nav-item-${tab.id}`;
|
const id = `extension-${extension.sanitizedExtensionId}-nav-item-${tab.id}`;
|
||||||
const isActive = computed(() => routeIsActive.get() && pathParameters.get().tabId === tab.id);
|
const isActive = computed(() => routeIsActive.get() && pathParameters.get().tabId === tab.id);
|
||||||
|
|
||||||
return getInjectable({
|
return getInjectable({
|
||||||
@ -51,10 +51,6 @@ const extensionSpecificTabNavigationItemRegistratorInjectable = getInjectable({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
di.register(...injectables);
|
|
||||||
|
|
||||||
return;
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
injectionToken: extensionRegistratorInjectionToken,
|
injectionToken: extensionRegistratorInjectionToken,
|
||||||
|
|||||||
@ -8,32 +8,34 @@ import extensionPreferencesRouteInjectable from "../../../../common/front-end-ro
|
|||||||
import navigateToExtensionPreferencesInjectable from "../../../../common/front-end-routing/routes/preferences/extension/navigate-to-extension-preferences.injectable";
|
import navigateToExtensionPreferencesInjectable from "../../../../common/front-end-routing/routes/preferences/extension/navigate-to-extension-preferences.injectable";
|
||||||
import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token";
|
import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token";
|
||||||
import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
||||||
import currentPathParametersInjectable from "../../../routes/current-path-parameters.injectable";
|
|
||||||
import routeIsActiveInjectable from "../../../routes/route-is-active.injectable";
|
import routeIsActiveInjectable from "../../../routes/route-is-active.injectable";
|
||||||
|
import routePathParametersInjectable from "../../../routes/route-path-parameters.injectable";
|
||||||
import { preferenceNavigationItemInjectionToken } from "./preference-navigation-items.injectable";
|
import { preferenceNavigationItemInjectionToken } from "./preference-navigation-items.injectable";
|
||||||
|
|
||||||
const extensionPreferencesNavigationItemRegistratorInjectable = getInjectable({
|
const extensionPreferencesNavigationItemRegistratorInjectable = getInjectable({
|
||||||
id: "extension-preferences-navigation-item",
|
id: "extension-preferences-navigation-item",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
return (ext, extensionInstallationCount) => {
|
return (ext) => {
|
||||||
const extension = ext as LensRendererExtension;
|
const extension = ext as LensRendererExtension;
|
||||||
const navigateToExtensionPreferences = di.inject(
|
const navigateToExtensionPreferences = di.inject(
|
||||||
navigateToExtensionPreferencesInjectable,
|
navigateToExtensionPreferencesInjectable,
|
||||||
);
|
);
|
||||||
|
|
||||||
const extensionHasPreferences = extension.appPreferences.length > 0;
|
const extensionHasPreferences = extension.appPreferences.length > 0;
|
||||||
const extensionHasGeneralPreferences = extension.appPreferences.some(preferences =>
|
const extensionHasGeneralPreferences = extension.appPreferences.some(preferences =>
|
||||||
!preferences.showInPreferencesTab,
|
!preferences.showInPreferencesTab,
|
||||||
);
|
);
|
||||||
const isVisible = computed(() => extensionHasPreferences && extensionHasGeneralPreferences);
|
const isVisible = computed(() => extensionHasPreferences && extensionHasGeneralPreferences);
|
||||||
const extensionRoute = di.inject(extensionPreferencesRouteInjectable);
|
const extensionRoute = di.inject(extensionPreferencesRouteInjectable);
|
||||||
const pathParameters = di.inject(currentPathParametersInjectable);
|
const pathParameters = di.inject(routePathParametersInjectable, extensionRoute);
|
||||||
const routeIsActive = di.inject(routeIsActiveInjectable, extensionRoute);
|
const routeIsActive = di.inject(routeIsActiveInjectable, extensionRoute);
|
||||||
|
|
||||||
const isActive = computed(() => routeIsActive.get() && pathParameters.get().extensionId === extension.sanitizedExtensionId);
|
const isActive = computed(() => routeIsActive.get() && pathParameters.get().extensionId === extension.sanitizedExtensionId);
|
||||||
|
const id = `extension-preferences-navigation-item-${extension.sanitizedExtensionId}`;
|
||||||
|
|
||||||
const extensionInjectable = getInjectable({
|
const injectable = getInjectable({
|
||||||
id: `extension-preferences-navigation-item-${extension.sanitizedExtensionId}-${extensionInstallationCount}`,
|
id,
|
||||||
|
injectionToken: preferenceNavigationItemInjectionToken,
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: `extension-${extension.sanitizedExtensionId}`,
|
id: `extension-${extension.sanitizedExtensionId}`,
|
||||||
label: `${extension.name}`,
|
label: `${extension.name}`,
|
||||||
@ -43,10 +45,9 @@ const extensionPreferencesNavigationItemRegistratorInjectable = getInjectable({
|
|||||||
orderNumber: 20,
|
orderNumber: 20,
|
||||||
fromExtension: true,
|
fromExtension: true,
|
||||||
}),
|
}),
|
||||||
injectionToken: preferenceNavigationItemInjectionToken,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
di.register(extensionInjectable);
|
return [injectable];
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user