@keycloakify/keycloak-account-ui 25.0.4-rc.1 → 25.0.4-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/KcAccountUi.js +2 -2
  2. package/KcAccountUi.js.map +1 -1
  3. package/KcAccountUiLoader.d.ts +46 -24
  4. package/KcAccountUiLoader.js +193 -46
  5. package/KcAccountUiLoader.js.map +1 -1
  6. package/README.md +12 -14
  7. package/i18n.d.ts +1 -1
  8. package/i18n.js +2 -1
  9. package/i18n.js.map +1 -1
  10. package/messages/messages_ar.properties +187 -0
  11. package/messages/messages_ca.properties +125 -0
  12. package/messages/messages_cs.properties +22 -0
  13. package/messages/messages_da.properties +36 -0
  14. package/messages/messages_de.properties +194 -0
  15. package/messages/messages_el.properties +125 -0
  16. package/messages/messages_en.properties +201 -0
  17. package/messages/messages_es.properties +125 -0
  18. package/messages/messages_fa.properties +155 -0
  19. package/messages/messages_fi.properties +56 -0
  20. package/messages/messages_fr.properties +171 -0
  21. package/messages/messages_hu.properties +125 -0
  22. package/messages/messages_it.properties +124 -0
  23. package/messages/messages_ja.properties +36 -0
  24. package/messages/messages_ka.properties +201 -0
  25. package/messages/messages_lt.properties +22 -0
  26. package/messages/messages_lv.properties +30 -0
  27. package/messages/messages_nl.properties +166 -0
  28. package/messages/messages_no.properties +22 -0
  29. package/messages/messages_pl.properties +182 -0
  30. package/messages/messages_pt.properties +188 -0
  31. package/messages/messages_pt_BR.properties +94 -0
  32. package/messages/messages_ru.properties +158 -0
  33. package/messages/messages_sk.properties +26 -0
  34. package/messages/messages_sv.properties +22 -0
  35. package/messages/messages_th.properties +125 -0
  36. package/messages/messages_tr.properties +172 -0
  37. package/messages/messages_uk.properties +187 -0
  38. package/messages/messages_zh_CN.properties +194 -0
  39. package/messages/messages_zh_TW.properties +188 -0
  40. package/package.json +38 -4
  41. package/personal-info/PersonalInfo.js +2 -2
  42. package/personal-info/PersonalInfo.js.map +1 -1
  43. package/root/Header.js +1 -1
  44. package/root/Header.js.map +1 -1
  45. package/src/KcAccountUi.tsx +2 -2
  46. package/src/KcAccountUiLoader.tsx +308 -74
  47. package/src/i18n.ts +3 -1
  48. package/src/personal-info/PersonalInfo.tsx +3 -2
  49. package/src/root/Header.tsx +1 -1
  50. package/src/utils/formatDate.ts +3 -2
  51. package/src/zKcContextLike.ts +230 -0
  52. package/utils/formatDate.js +2 -2
  53. package/utils/formatDate.js.map +1 -1
  54. package/zKcContextLike.d.ts +7 -0
  55. package/zKcContextLike.js +138 -0
  56. package/zKcContextLike.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"PersonalInfo.js","sourceRoot":"","sources":["../src/personal-info/PersonalInfo.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PersonalInfo.js","sourceRoot":"","sources":["../src/personal-info/PersonalInfo.tsx"],"names":[],"mappings":"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"}
package/root/Header.js CHANGED
@@ -23,7 +23,7 @@ export const Header = () => {
23
23
  const indexHref = logoUrl.startsWith("/") ? internalLogoHref : logoUrl;
24
24
  return (_jsx(KeycloakMasthead, { "data-testid": "page-header", keycloak: keycloak, features: { hasManageAccount: false }, showNavToggle: true, brand: {
25
25
  href: indexHref,
26
- src: joinPath(environment.resourceUrl, brandImage),
26
+ src: /https?:/.test(brandImage) || brandImage.startsWith("data:") || brandImage.startsWith("/") ? brandImage : joinPath(environment.resourceUrl, brandImage),
27
27
  alt: t("logo"),
28
28
  className: style.brand,
29
29
  }, toolbarItems: [_jsx(ReferrerLink, {}, "link")] }));
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/root/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,cAAc,GACf,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iDAAiD,CAAC;AAE3E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAE5E,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAC/B,KAAC,MAAM,mBACO,eAAe,EAC3B,SAAS,EAAC,GAAG,EACb,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EACpD,OAAO,EAAC,MAAM,EACd,IAAI,EAAE,KAAC,yBAAyB,KAAG,EACnC,YAAY,EAAC,OAAO,EACpB,QAAQ,kBAEP,CAAC,CAAC,QAAQ,EAAE;YACX,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,WAAW,CAAC;SACjE,CAAC,GACK,CACV,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;IACnD,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C,0EAA0E;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvE,OAAO,CACL,KAAC,gBAAgB,mBACH,aAAa,EACzB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,EACrC,aAAa,QACb,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;YAClD,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,SAAS,EAAE,KAAK,CAAC,KAAK;SACvB,EACD,YAAY,EAAE,CAAC,KAAC,YAAY,MAAK,MAAM,CAAG,CAAC,GAC3C,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/root/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,cAAc,GACf,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,iDAAiD,CAAC;AAE3E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAE5E,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAC/B,KAAC,MAAM,mBACO,eAAe,EAC3B,SAAS,EAAC,GAAG,EACb,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EACpD,OAAO,EAAC,MAAM,EACd,IAAI,EAAE,KAAC,yBAAyB,KAAG,EACnC,YAAY,EAAC,OAAO,EACpB,QAAQ,kBAEP,CAAC,CAAC,QAAQ,EAAE;YACX,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,WAAW,CAAC;SACjE,CAAC,GACK,CACV,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;IACnD,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C,0EAA0E;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvE,OAAO,CACL,KAAC,gBAAgB,mBACH,aAAa,EACzB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,EACrC,aAAa,QACb,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;YAC5J,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,SAAS,EAAE,KAAK,CAAC,KAAK;SACvB,EACD,YAAY,EAAE,CAAC,KAAC,YAAY,MAAK,MAAM,CAAG,CAAC,GAC3C,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -4,11 +4,11 @@ import "@patternfly/patternfly/patternfly-addons.css";
4
4
 
5
5
  import { createBrowserRouter, RouterProvider } from "react-router-dom";
6
6
 
7
- import { i18n } from "@keycloakify/keycloak-account-ui/i18n";
7
+ import { initI18n } from "@keycloakify/keycloak-account-ui/i18n";
8
8
  import { routes } from "@keycloakify/keycloak-account-ui/routes";
9
9
 
10
10
  const router = createBrowserRouter(routes);
11
- const prI18nInitialized = i18n.init();
11
+ const prI18nInitialized = initI18n();
12
12
 
13
13
  export default function KeycloakAccountUi() {
14
14
  const [isI18nInitialized, setI18nInitialized] = useReducer(() => true, false);
@@ -1,38 +1,79 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-namespace */
1
3
  import { Suspense, useMemo, type LazyExoticComponent } from "react";
2
- import { assert } from "tsafe/assert";
3
- import { is } from "tsafe/is";
4
+ import { assert, is } from "tsafe/assert";
4
5
  import type { Environment } from "@keycloakify/keycloak-account-ui/environment";
5
6
  import type { MenuItem } from "@keycloakify/keycloak-account-ui/root/PageNav";
6
7
  import { joinPath } from "@keycloakify/keycloak-account-ui/utils/joinPath";
7
8
  import defaultContent from "@keycloakify/keycloak-account-ui/public/content";
8
9
  import defaultLogoSvgUrl from "@keycloakify/keycloak-account-ui/public/logo.svg";
10
+ import { getI18n } from "react-i18next";
11
+ //import { logValidationResult } from "./zKcContextLike";
12
+
13
+ export type KcContextLike =
14
+ | KcContextLike.Keycloak25AndUp
15
+ | KcContextLike.Keycloak20To24
16
+ | KcContextLike.Keycloak19;
17
+
18
+ export namespace KcContextLike {
19
+ export type Common = {
20
+ realm: {
21
+ name: string;
22
+ registrationEmailAsUsername: boolean;
23
+ editUsernameAllowed: boolean;
24
+ isInternationalizationEnabled: boolean;
25
+ identityFederationEnabled: boolean;
26
+ userManagedAccessAllowed: boolean;
27
+ };
28
+ resourceUrl: string;
29
+ baseUrl: {
30
+ rawSchemeSpecificPart: string;
31
+ scheme: string;
32
+ };
33
+ locale: string;
34
+ isAuthorizationEnabled: boolean;
35
+ deleteAccountAllowed: boolean;
36
+ updateEmailFeatureEnabled: boolean;
37
+ updateEmailActionEnabled: boolean;
38
+ };
9
39
 
10
- export type KcContextLike = {
11
- serverBaseUrl: string;
12
- authUrl: string;
13
- authServerUrl: string;
14
- realm: {
15
- name: string;
16
- registrationEmailAsUsername: boolean;
17
- editUsernameAllowed: boolean;
18
- isInternationalizationEnabled: boolean;
19
- identityFederationEnabled: boolean;
20
- userManagedAccessAllowed: boolean;
40
+ export type I18nApi = {
41
+ msgJSON: string;
42
+ supportedLocales?: Record<string, string>;
21
43
  };
22
- clientId: string;
23
- resourceUrl: string;
24
- baseUrl: {
25
- rawSchemeSpecificPart: string;
26
- scheme: string;
44
+
45
+ export type Keycloak25AndUp = Common & {
46
+ serverBaseUrl: string;
47
+ authUrl: string;
48
+ clientId: string;
49
+ authServerUrl: string;
50
+ isOid4VciEnabled: boolean;
51
+ isViewGroupsEnabled: boolean;
27
52
  };
28
- locale: string;
29
- isAuthorizationEnabled: boolean;
30
- deleteAccountAllowed: boolean;
31
- updateEmailFeatureEnabled: boolean;
32
- updateEmailActionEnabled: boolean;
33
- isViewGroupsEnabled: boolean;
34
- isOid4VciEnabled: boolean;
35
- };
53
+
54
+ export type Keycloak20To24 = Common &
55
+ I18nApi & {
56
+ authUrl: {
57
+ rawSchemeSpecificPart: string;
58
+ scheme: string;
59
+ };
60
+ isViewGroupsEnabled: boolean;
61
+ };
62
+
63
+ export type Keycloak19 = Common &
64
+ I18nApi & {
65
+ authUrl: {
66
+ rawSchemeSpecificPart: string;
67
+ scheme: string;
68
+ };
69
+ };
70
+ }
71
+
72
+ function getIsKeycloak25AndUp(
73
+ kcContext: KcContextLike,
74
+ ): kcContext is KcContextLike.Keycloak25AndUp {
75
+ return "serverBaseUrl" in kcContext;
76
+ }
36
77
 
37
78
  type LazyExoticComponentLike = {
38
79
  _result: unknown;
@@ -91,57 +132,71 @@ function init(
91
132
 
92
133
  const { content = defaultContent, kcContext } = params;
93
134
 
94
- const logoUrl = (() => {
95
- if (params.logoUrl?.startsWith("data:")) {
96
- const error = new Error(
97
- [
98
- `ERROR: The logo url can't be a data url.`,
99
- `Due to the fact your logo is very small it has been inlined in the bundle.`,
100
- `The logoUrl you passed is: ${params.logoUrl.substring(0, 25)}...`,
101
- `To fix this issue you can put the logo in the public directory and import it like:`,
102
- `logoUrl={\`\${${["import", "meta", "env", "BASE_URL"].join(".")}}assets/logo.svg\`} if you are using Vite or`,
103
- `logoUrl={\`\${process.env.PUBLIC_URL}/assets/logo.svg\`} if you are using Webpack (CRA).`,
104
- `If it's an SVG you can also pad it's size with random \`<!-- xxx -->\` comments to make it bigger that it passes the threshold of 4KB.`,
105
- ].join("\n"),
106
- );
107
- alert(error.message);
108
- throw error;
135
+ //logValidationResult(kcContext);
136
+
137
+ const logoUrl = params.logoUrl ?? defaultLogoSvgUrl;
138
+
139
+ const resourceUrl = kcContext.resourceUrl;
140
+
141
+ const serverBaseUrl = (() => {
142
+ if ("serverBaseUrl" in kcContext) {
143
+ return kcContext.serverBaseUrl;
109
144
  }
110
145
 
111
- const logoUrl_params = params.logoUrl ?? defaultLogoSvgUrl;
146
+ const { authUrl } = kcContext;
112
147
 
113
- const url = new URL(
114
- logoUrl_params.startsWith("http")
115
- ? logoUrl_params
116
- : joinPath(window.location.origin, logoUrl_params),
117
- );
148
+ if (typeof authUrl === "string") {
149
+ return authUrl;
150
+ }
118
151
 
119
- return url.href.substring(url.origin.length);
152
+ return `${authUrl.scheme}:${authUrl.rawSchemeSpecificPart.replace(/\$/, "")}`;
120
153
  })();
121
154
 
122
- const resourceUrl = kcContext.resourceUrl;
155
+ const authUrl = (() => {
156
+ const { authUrl } = kcContext;
123
157
 
124
- if (!logoUrl.startsWith(resourceUrl)) {
125
- const error = new Error(`ERROR: The logo url can't be an external url.`);
126
- alert(error.message);
127
- throw error;
128
- }
158
+ if (typeof authUrl === "string") {
159
+ return authUrl;
160
+ }
161
+
162
+ return `${authUrl.scheme}:${authUrl.rawSchemeSpecificPart}`;
163
+ })();
164
+
165
+ const clientId = (() => {
166
+ if ("clientId" in kcContext) {
167
+ return kcContext.clientId;
168
+ }
169
+
170
+ return "account-console";
171
+ })();
172
+
173
+ const authServerUrl = (() => {
174
+ if ("authServerUrl" in kcContext) {
175
+ return kcContext.authServerUrl;
176
+ }
177
+
178
+ return authUrl;
179
+ })();
180
+
181
+ const referrerUrl = readQueryParamOrRestoreFromSessionStorage({
182
+ name: "referrer_uri",
183
+ });
129
184
 
130
185
  const environment = {
131
- serverBaseUrl: kcContext.serverBaseUrl,
132
- authUrl: kcContext.authUrl,
133
- authServerUrl: kcContext.authServerUrl,
186
+ serverBaseUrl,
187
+ authUrl,
188
+ authServerUrl,
134
189
  realm: kcContext.realm.name,
135
- clientId: kcContext.clientId,
190
+ clientId,
136
191
  resourceUrl,
137
- logo: logoUrl.substring(resourceUrl.length),
138
- logoUrl: logoUrl,
192
+ logo: logoUrl,
193
+ logoUrl:
194
+ referrerUrl === undefined ? "/" : referrerUrl.replace("_hash_", "#"),
139
195
  baseUrl: `${kcContext.baseUrl.scheme}:${kcContext.baseUrl.rawSchemeSpecificPart}`,
140
196
  locale: kcContext.locale,
141
197
  referrerName:
142
198
  readQueryParamOrRestoreFromSessionStorage({ name: "referrer" }) ?? "",
143
- referrerUrl:
144
- readQueryParamOrRestoreFromSessionStorage({ name: "referrer_uri" }) ?? "",
199
+ referrerUrl: referrerUrl ?? "",
145
200
  features: {
146
201
  isRegistrationEmailAsUsername:
147
202
  kcContext.realm.registrationEmailAsUsername,
@@ -155,8 +210,13 @@ function init(
155
210
  deleteAccountAllowed: kcContext.deleteAccountAllowed,
156
211
  updateEmailFeatureEnabled: kcContext.updateEmailFeatureEnabled,
157
212
  updateEmailActionEnabled: kcContext.updateEmailActionEnabled,
158
- isViewGroupsEnabled: kcContext.isViewGroupsEnabled,
159
- isOid4VciEnabled: kcContext.isOid4VciEnabled,
213
+ isViewGroupsEnabled:
214
+ "isViewGroupsEnabled" in kcContext
215
+ ? kcContext.isViewGroupsEnabled
216
+ : false,
217
+ isOid4VciEnabled: getIsKeycloak25AndUp(kcContext)
218
+ ? kcContext.isOid4VciEnabled
219
+ : false,
160
220
  },
161
221
  };
162
222
 
@@ -171,19 +231,193 @@ function init(
171
231
  document.body.appendChild(script);
172
232
  }
173
233
 
174
- const realFetch = window.fetch;
234
+ {
235
+ const realFetch = window.fetch;
236
+
237
+ const buildJsonResponse = (json: unknown): Response => {
238
+ const response = {
239
+ headers: new Headers({ "Content-Type": "application/json" }),
240
+ ok: true,
241
+ json: () => Promise.resolve(json),
242
+ text: () => Promise.resolve(JSON.stringify(json)),
243
+ status: 200,
244
+ } as Response;
175
245
 
176
- window.fetch = async function fetch(...args) {
177
- const [url] = args;
246
+ /*
247
+ return new Proxy(response, {
248
+ get(target, prop, receiver) {
249
+ console.log(`GET ${String(prop)}`);
250
+ return Reflect.get(target, prop, receiver);
251
+ },
252
+ });
253
+ */
254
+ return response;
255
+ };
256
+
257
+ let isLanguageChangeEventListened = false;
258
+ let wasLocaleAttributeManuallyAdded = false;
259
+
260
+ window.fetch = async function fetch(...args) {
261
+ const [url, fetchOptions] = args;
262
+
263
+ polyfill_i18n_api: {
264
+ if (getIsKeycloak25AndUp(kcContext)) {
265
+ break polyfill_i18n_api;
266
+ }
267
+ //assert(is<KcContextLike.Keycloak20To24>(kcContext));
178
268
 
179
- if (url === joinPath(environment.resourceUrl, "/content.json")) {
180
- return {
181
- json: () => Promise.resolve(content),
182
- } as Response;
183
- }
269
+ const langs =
270
+ kcContext.supportedLocales === undefined
271
+ ? ["en"]
272
+ : Object.keys(kcContext.supportedLocales);
184
273
 
185
- return realFetch(...args);
186
- };
274
+ if (`${url}`.endsWith("/supportedLocales")) {
275
+ return buildJsonResponse(langs);
276
+ }
277
+
278
+ for (const lang of langs) {
279
+ if (!`${url}`.endsWith(`/${lang}`)) {
280
+ continue;
281
+ }
282
+
283
+ const data = Object.entries(
284
+ JSON.parse(kcContext.msgJSON) as Record<string, string>,
285
+ ).map(([key, value]) => {
286
+ try {
287
+ value = decodeURIComponent(escape(value));
288
+ } catch {
289
+ // ignore
290
+ }
291
+
292
+ return { key, value };
293
+ });
294
+
295
+ track_language_change: {
296
+ if (isLanguageChangeEventListened) {
297
+ break track_language_change;
298
+ }
299
+ isLanguageChangeEventListened = true;
300
+
301
+ getI18n().on("languageChanged", (lang) => {
302
+ if (lang !== kcContext.locale) {
303
+ window.location.reload();
304
+ }
305
+ });
306
+ }
307
+
308
+ return buildJsonResponse(data);
309
+ }
310
+
311
+ const urlObj = new URL(
312
+ (() => {
313
+ const urlStr = `${url}`;
314
+
315
+ return urlStr.startsWith("/")
316
+ ? `${window.location.origin}${urlStr}`
317
+ : urlStr;
318
+ })(),
319
+ );
320
+
321
+ add_locale_attribute: {
322
+ if (!environment.features.isInternationalizationEnabled) {
323
+ break add_locale_attribute;
324
+ }
325
+
326
+ if ((fetchOptions?.method?.toLocaleLowerCase() ?? "get") !== "get") {
327
+ break add_locale_attribute;
328
+ }
329
+
330
+ if (!urlObj.pathname.replace(/\/$/, "").endsWith("/account")) {
331
+ break add_locale_attribute;
332
+ }
333
+
334
+ if (urlObj.searchParams.get("userProfileMetadata") !== "true") {
335
+ break add_locale_attribute;
336
+ }
337
+
338
+ const response = await realFetch(...args);
339
+
340
+ if (!response.ok) {
341
+ return response;
342
+ }
343
+
344
+ const data = await response.json();
345
+
346
+ data.attributes ??= {};
347
+
348
+ data.attributes.locale = [kcContext.locale];
349
+
350
+ data.userProfileMetadata ??= {};
351
+ data.userProfileMetadata.attributes ??= [];
352
+
353
+ if (
354
+ !data.userProfileMetadata.attributes.find(
355
+ (attribute: any) => attribute.name === "locale",
356
+ )
357
+ ) {
358
+ wasLocaleAttributeManuallyAdded = true;
359
+ data.userProfileMetadata.attributes.unshift({
360
+ name: "locale",
361
+ displayName: "locale",
362
+ required: false,
363
+ readOnly: false,
364
+ validators: {},
365
+ multivalued: false,
366
+ });
367
+ }
368
+
369
+ return buildJsonResponse(data);
370
+ }
371
+
372
+ remove_locale_attribute_from_req: {
373
+ if (!wasLocaleAttributeManuallyAdded) {
374
+ break remove_locale_attribute_from_req;
375
+ }
376
+
377
+ if ((fetchOptions?.method?.toLocaleLowerCase() ?? "get") !== "post") {
378
+ break remove_locale_attribute_from_req;
379
+ }
380
+
381
+ if (!urlObj.pathname.replace(/\/$/, "").endsWith("/account")) {
382
+ break remove_locale_attribute_from_req;
383
+ }
384
+
385
+ if (fetchOptions?.body === undefined) {
386
+ break remove_locale_attribute_from_req;
387
+ }
388
+
389
+ let reqPayload: any;
390
+
391
+ try {
392
+ reqPayload = JSON.parse(fetchOptions.body as string);
393
+ } catch {
394
+ break remove_locale_attribute_from_req;
395
+ }
396
+
397
+ if (reqPayload.userProfileMetadata === undefined) {
398
+ break remove_locale_attribute_from_req;
399
+ }
400
+
401
+ reqPayload.userProfileMetadata.attributes =
402
+ reqPayload.userProfileMetadata.attributes.filter(
403
+ (attr: any) => attr.name !== "locale",
404
+ );
405
+
406
+ fetchOptions.body = JSON.stringify(reqPayload);
407
+
408
+ args[1] = fetchOptions;
409
+
410
+ return realFetch(...args);
411
+ }
412
+ }
413
+
414
+ if (url === joinPath(environment.resourceUrl, "/content.json")) {
415
+ return buildJsonResponse(content);
416
+ }
417
+
418
+ return realFetch(...args);
419
+ };
420
+ }
187
421
  }
188
422
 
189
423
  function readQueryParamOrRestoreFromSessionStorage(params: {
package/src/i18n.ts CHANGED
@@ -22,7 +22,9 @@ export const keycloakLanguageDetector: LanguageDetectorModule = {
22
22
  },
23
23
  };
24
24
 
25
- export const i18n = createInstance({
25
+ export function initI18n() { return i18n.init(); }
26
+
27
+ const i18n = createInstance({
26
28
  fallbackLng: DEFAULT_LOCALE,
27
29
  interpolation: {
28
30
  escapeValue: false,
@@ -1,3 +1,4 @@
1
+ import { getI18n } from "react-i18next";
1
2
  import {
2
3
  UserProfileFields,
3
4
  beerify,
@@ -31,7 +32,7 @@ import {
31
32
  } from "@keycloakify/keycloak-account-ui/api/representations";
32
33
  import { Page } from "@keycloakify/keycloak-account-ui/components/page/Page";
33
34
  import type { Environment } from "@keycloakify/keycloak-account-ui/environment";
34
- import { TFuncKey, i18n } from "@keycloakify/keycloak-account-ui/i18n";
35
+ import { TFuncKey } from "@keycloakify/keycloak-account-ui/i18n";
35
36
  import { usePromise } from "@keycloakify/keycloak-account-ui/utils/usePromise";
36
37
 
37
38
  export const PersonalInfo = () => {
@@ -70,7 +71,7 @@ export const PersonalInfo = () => {
70
71
  );
71
72
  await savePersonalInfo(context, { ...user, attributes });
72
73
  const locale = attributes["locale"]?.toString();
73
- i18n.changeLanguage(locale, (error) => {
74
+ getI18n().changeLanguage(locale, (error) => {
74
75
  if (error) {
75
76
  console.warn("Error(s) loading locale", locale, error);
76
77
  }
@@ -52,7 +52,7 @@ export const Header = () => {
52
52
  showNavToggle
53
53
  brand={{
54
54
  href: indexHref,
55
- src: joinPath(environment.resourceUrl, brandImage),
55
+ src: /https?:/.test(brandImage) || brandImage.startsWith("data:") || brandImage.startsWith("/") ? brandImage : joinPath(environment.resourceUrl, brandImage),
56
56
  alt: t("logo"),
57
57
  className: style.brand,
58
58
  }}
@@ -1,4 +1,5 @@
1
- import { i18n } from "@keycloakify/keycloak-account-ui/i18n";
1
+ import { getI18n } from "react-i18next";
2
+ import { } from "@keycloakify/keycloak-account-ui/i18n";
2
3
 
3
4
  export const FORMAT_DATE_ONLY: Intl.DateTimeFormatOptions = {
4
5
  dateStyle: "long",
@@ -14,5 +15,5 @@ export const FORMAT_DATE_AND_TIME: Intl.DateTimeFormatOptions = {
14
15
  };
15
16
 
16
17
  export function formatDate(date: Date, options = FORMAT_DATE_AND_TIME) {
17
- return date.toLocaleString(i18n.languages, options);
18
+ return date.toLocaleString(getI18n().languages, options);
18
19
  }