Set html lang property and page title in usePrepareTemplate
This commit is contained in:
parent
85cc665d17
commit
6991d868be
@ -1,6 +1,7 @@
|
|||||||
import { useReducer, useEffect } from "react";
|
import { useReducer, useEffect } from "react";
|
||||||
import { headInsert } from "keycloakify/tools/headInsert";
|
import { headInsert } from "keycloakify/tools/headInsert";
|
||||||
import { clsx } from "keycloakify/tools/clsx";
|
import { clsx } from "keycloakify/tools/clsx";
|
||||||
|
import { assert } from "tsafe/assert";
|
||||||
|
|
||||||
export function usePrepareTemplate(params: {
|
export function usePrepareTemplate(params: {
|
||||||
doFetchDefaultThemeResources: boolean;
|
doFetchDefaultThemeResources: boolean;
|
||||||
@ -8,11 +9,31 @@ export function usePrepareTemplate(params: {
|
|||||||
scripts?: string[];
|
scripts?: string[];
|
||||||
htmlClassName: string | undefined;
|
htmlClassName: string | undefined;
|
||||||
bodyClassName: string | undefined;
|
bodyClassName: string | undefined;
|
||||||
|
htmlLangProperty?: string | undefined;
|
||||||
|
documentTitle?: string;
|
||||||
}) {
|
}) {
|
||||||
const { doFetchDefaultThemeResources, styles = [], scripts = [], htmlClassName, bodyClassName } = params;
|
const { doFetchDefaultThemeResources, styles = [], scripts = [], htmlClassName, bodyClassName, htmlLangProperty, documentTitle } = params;
|
||||||
|
|
||||||
const [isReady, setReady] = useReducer(() => true, !doFetchDefaultThemeResources);
|
const [isReady, setReady] = useReducer(() => true, !doFetchDefaultThemeResources);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (htmlLangProperty === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const html = document.querySelector("html");
|
||||||
|
assert(html !== null);
|
||||||
|
html.lang = htmlLangProperty;
|
||||||
|
}, [htmlLangProperty]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (documentTitle === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
document.title = documentTitle;
|
||||||
|
}, [documentTitle]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!doFetchDefaultThemeResources) {
|
if (!doFetchDefaultThemeResources) {
|
||||||
return;
|
return;
|
||||||
|
@ -38,15 +38,15 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
|
|||||||
`${url.resourcesPath}/css/login.css`
|
`${url.resourcesPath}/css/login.css`
|
||||||
],
|
],
|
||||||
"htmlClassName": getClassName("kcHtmlClass"),
|
"htmlClassName": getClassName("kcHtmlClass"),
|
||||||
"bodyClassName": getClassName("kcBodyClass")
|
"bodyClassName": getClassName("kcBodyClass"),
|
||||||
|
"htmlLangProperty": locale?.currentLanguageTag,
|
||||||
|
"documentTitle": i18n.msgStr("loginTitle", kcContext.realm.displayName)
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!isReady) {
|
if (!isReady) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
document.title = i18n.msgStr("loginTitle", kcContext.realm.displayName);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={getClassName("kcLoginClass")}>
|
<div className={getClassName("kcLoginClass")}>
|
||||||
<div id="kc-header" className={getClassName("kcHeaderClass")}>
|
<div id="kc-header" className={getClassName("kcHeaderClass")}>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user