{
}
return (
-
- {this.props.screenName && }
-
- {this.props.top}
-
+
+ {this.props.screenName && }
+
- {!!(this.props.title || headerImage) && (
-
- {headerImage}
- {this.props.title}
-
- )}
- {this.props.headerButton}
-
- {this.props.children}
- {cancelButton}
-
-
+ {this.props.top}
+
+ {!!(this.props.title || headerImage) && (
+
+ {headerImage}
+ {this.props.title}
+
+ )}
+ {this.props.headerButton}
+
+ {this.props.children}
+ {cancelButton}
+
+
+
);
}
}
diff --git a/src/modules/Api.ts b/src/modules/Api.ts
index 2ff85c968f..057cbf71b0 100644
--- a/src/modules/Api.ts
+++ b/src/modules/Api.ts
@@ -7,6 +7,7 @@ Please see LICENSE files in the repository root for full details.
import { createRoot, type Root } from "react-dom/client";
import { type Api, type RuntimeModuleConstructor } from "@element-hq/element-web-module-api";
+import { I18nApi } from "@element-hq/web-shared-components";
import { ModuleRunner } from "./ModuleRunner.ts";
import AliasCustomisations from "../customisations/Alias.ts";
@@ -20,7 +21,6 @@ import UserIdentifierCustomisations from "../customisations/UserIdentifier.ts";
import { WidgetPermissionCustomisations } from "../customisations/WidgetPermissions.ts";
import { WidgetVariableCustomisations } from "../customisations/WidgetVariables.ts";
import { ConfigApi } from "./ConfigApi.ts";
-import { I18nApi } from "./I18nApi.ts";
import { CustomComponentsApi } from "./customComponentApi";
import { WatchableProfile } from "./Profile.ts";
import { NavigationApi } from "./Navigation.ts";
diff --git a/test/setup/setupLanguage.ts b/test/setup/setupLanguage.ts
index 347f38edfc..124ff7cbbd 100644
--- a/test/setup/setupLanguage.ts
+++ b/test/setup/setupLanguage.ts
@@ -7,10 +7,12 @@ Please see LICENSE files in the repository root for full details.
*/
import fetchMock from "fetch-mock-jest";
+import { ModuleLoader } from "@element-hq/element-web-module-api";
import * as languageHandler from "../../src/languageHandler";
import en from "../../src/i18n/strings/en_EN.json";
import de from "../../src/i18n/strings/de_DE.json";
+import { ModuleApi } from "../../src/modules/Api";
const lv = {
Save: "Saglabāt",
@@ -43,3 +45,7 @@ setupLanguageMock();
languageHandler.setLanguage("en");
languageHandler.setMissingEntryGenerator((key) => key.split("|", 2)[1]);
+
+// Set up the mdule API (so the i18n API exists)
+const moduleLoader = new ModuleLoader(ModuleApi.instance);
+window.mxModuleLoader = moduleLoader;
diff --git a/test/test-utils/jest-matrix-react.tsx b/test/test-utils/jest-matrix-react.tsx
index ed5ff0075e..76150df478 100644
--- a/test/test-utils/jest-matrix-react.tsx
+++ b/test/test-utils/jest-matrix-react.tsx
@@ -10,17 +10,33 @@ import React, { type ReactElement } from "react";
// eslint-disable-next-line no-restricted-imports
import { render, type RenderOptions } from "@testing-library/react";
import { TooltipProvider } from "@vector-im/compound-web";
+import { I18nContext } from "@element-hq/web-shared-components";
-const wrapWithTooltipProvider = (Wrapper: RenderOptions["wrapper"]) => {
+/**
+ * Wraps the provided components in:
+ * * A TooltipProvider
+ * * An I18nContext.Provider
+ *
+ * ...plus any wrapper provided in the options.
+ * @param Wrapper Additional wrapper to include
+ * @returns The wrapped component
+ */
+const wrapWithStandardContexts = (Wrapper: RenderOptions["wrapper"]) => {
return ({ children }: { children: React.ReactNode }) => {
if (Wrapper) {
return (
- {children}
+
+ {children}
+
);
} else {
- return {children};
+ return (
+
+ {children}
+
+ );
}
};
};
@@ -28,7 +44,7 @@ const wrapWithTooltipProvider = (Wrapper: RenderOptions["wrapper"]) => {
const customRender = (ui: ReactElement, options: RenderOptions = {}) => {
return render(ui, {
...options,
- wrapper: wrapWithTooltipProvider(options?.wrapper) as RenderOptions["wrapper"],
+ wrapper: wrapWithStandardContexts(options?.wrapper) as RenderOptions["wrapper"],
}) as ReturnType;
};
diff --git a/yarn.lock b/yarn.lock
index 14ae639e6b..b70d671120 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1559,10 +1559,10 @@
resolved "https://registry.yarnpkg.com/@element-hq/element-call-embedded/-/element-call-embedded-0.16.1.tgz#28bdbde426051cc2a3228a36e7196e0a254569d3"
integrity sha512-g3v/QFuNy8YVRGrKC5SxjIYvgBh6biOHgejhJT2Jk/yjOOUEuP0y2PBaADm+suPD9BB/Vk1jPxFk2uEIpEzhpA==
-"@element-hq/element-web-module-api@1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@element-hq/element-web-module-api/-/element-web-module-api-1.6.0.tgz#bb109035cd0c82c094e2e83ba66b6c5b9788d58f"
- integrity sha512-7xew6AVX4T3J37KyhdgHuiEYdDMMYJC0/aIQOmBvVylWQFnmMmbkmkuqOBqkumcx7q6LgkB0z3cSzdKAKHIw/g==
+"@element-hq/element-web-module-api@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@element-hq/element-web-module-api/-/element-web-module-api-1.7.0.tgz#7657df25cc1e7075718af2c6ea8a4ebfaa9cfb2c"
+ integrity sha512-WhiJTmdETK8vvaYExqyhQ9rtLjxBv9PprWr6dCa1/1VRFSkfFZRlzy2P08nHX2YXpRMTpXb39SLeleR1dgLzow==
"@element-hq/element-web-playwright-common@^2.0.0":
version "2.0.0"
@@ -4153,13 +4153,14 @@
"@vector-im/matrix-wysiwyg-wasm@link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm":
version "0.0.0"
+ uid ""
"@vector-im/matrix-wysiwyg@2.40.0":
version "2.40.0"
resolved "https://registry.yarnpkg.com/@vector-im/matrix-wysiwyg/-/matrix-wysiwyg-2.40.0.tgz#53c9ca5ea907d91e4515da64f20a82e5586b882c"
integrity sha512-8LRFLs5PEKYs4lOL7aJ4lL/hGCrvEvOYkCR3JggXYXDVMtX4LmfdlKYucSAe98pCmqAAbLRvlRcR1bTOYvM8ug==
dependencies:
- "@vector-im/matrix-wysiwyg-wasm" "link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm"
+ "@vector-im/matrix-wysiwyg-wasm" "link:../../Library/Caches/Yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm"
"@vitest/expect@3.2.4":
version "3.2.4"
@@ -9599,7 +9600,7 @@ matrix-events-sdk@0.0.1:
jwt-decode "^4.0.0"
loglevel "^1.9.2"
matrix-events-sdk "0.0.1"
- matrix-widget-api "^1.14.0"
+ matrix-widget-api "^1.10.0"
oidc-client-ts "^3.0.1"
p-retry "7"
sdp-transform "^3.0.0"