rename pageBasename by pageId
This commit is contained in:
38
src/lib/components/Error.tsx
Normal file
38
src/lib/components/Error.tsx
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
import { memo } from "react";
|
||||
import { Template } from "./Template";
|
||||
import type { KcProps } from "./KcProps";
|
||||
import { assert } from "../tools/assert";
|
||||
import { kcContext } from "../kcContext";
|
||||
import { useKcTranslation } from "../i18n/useKcTranslation";
|
||||
|
||||
export const Error = memo((props: KcProps) => {
|
||||
|
||||
const { t } = useKcTranslation();
|
||||
|
||||
assert(
|
||||
kcContext !== undefined &&
|
||||
kcContext.pageId === "error.ftl" &&
|
||||
kcContext.message !== undefined
|
||||
);
|
||||
|
||||
const { message, client } = kcContext;
|
||||
|
||||
return (
|
||||
<Template
|
||||
{...props}
|
||||
displayMessage={false}
|
||||
headerNode={t("errorTitle")}
|
||||
formNode={
|
||||
<div id="kc-error-message">
|
||||
<p className="instruction">{message.summary}</p>
|
||||
<#if client?? && client.baseUrl?has_content>
|
||||
<p><a id="backToApplication" href="${client.baseUrl}">${kcSanitize(msg("backToApplication"))?no_esc}</a></p>
|
||||
</#if>
|
||||
</div>
|
||||
}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
|
@ -12,7 +12,7 @@ export const Info = memo((props: KcProps) => {
|
||||
|
||||
assert(
|
||||
kcContext !== undefined &&
|
||||
kcContext.pageBasename === "info.ftl" &&
|
||||
kcContext.pageId === "info.ftl" &&
|
||||
kcContext.message !== undefined
|
||||
);
|
||||
|
||||
|
@ -12,7 +12,7 @@ export const KcApp = memo((props: KcProps) => {
|
||||
|
||||
assert(kcContext !== undefined, "App is not currently served by a Keycloak server");
|
||||
|
||||
switch (kcContext.pageBasename) {
|
||||
switch (kcContext.pageId) {
|
||||
case "login.ftl": return <Login {...props} />;
|
||||
case "register.ftl": return <Register {...props} />;
|
||||
case "info.ftl": return <Info {...props} />;
|
||||
|
@ -14,7 +14,7 @@ export const Login = memo((props: KcProps) => {
|
||||
|
||||
assert(
|
||||
kcContext !== undefined &&
|
||||
kcContext.pageBasename === "login.ftl"
|
||||
kcContext.pageId === "login.ftl"
|
||||
);
|
||||
|
||||
const {
|
||||
|
@ -12,7 +12,7 @@ export const Register = memo((props: KcProps) => {
|
||||
|
||||
assert(
|
||||
kcContext !== undefined &&
|
||||
kcContext.pageBasename === "register.ftl"
|
||||
kcContext.pageId === "register.ftl"
|
||||
);
|
||||
|
||||
const {
|
||||
|
@ -9,5 +9,6 @@ export * from "./components/Login";
|
||||
export * from "./components/Template";
|
||||
export * from "./components/KcApp";
|
||||
export * from "./components/Info";
|
||||
export * from "./components/Error";
|
||||
|
||||
export * from "./tools/assert";
|
@ -1,6 +1,6 @@
|
||||
|
||||
import { ftlValuesGlobalName } from "../bin/build-keycloak-theme/ftlValuesGlobalName";
|
||||
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
|
||||
import type { PageId } from "../bin/build-keycloak-theme/generateFtl";
|
||||
import { id } from "evt/tools/typeSafety/id";
|
||||
import type { KcLanguageTag } from "./i18n/KcLanguageTag";
|
||||
import { doExtends } from "evt/tools/typeSafety/doExtends";
|
||||
@ -10,7 +10,7 @@ import type { LanguageLabel } from "./i18n/KcLanguageTag";
|
||||
type ExtractAfterStartingWith<Prefix extends string, StrEnum> =
|
||||
StrEnum extends `${Prefix}${infer U}` ? U : never;
|
||||
|
||||
export type KcContext = KcContext.Login | KcContext.Register | KcContext.Info;
|
||||
export type KcContext = KcContext.Login | KcContext.Register | KcContext.Info | KcContext.Error;
|
||||
export declare namespace KcContext {
|
||||
|
||||
export type Template = {
|
||||
@ -55,7 +55,7 @@ export declare namespace KcContext {
|
||||
};
|
||||
|
||||
export type Login = Template & {
|
||||
pageBasename: "login.ftl";
|
||||
pageId: "login.ftl";
|
||||
url: {
|
||||
loginResetCredentialsUrl: string;
|
||||
registrationUrl: string;
|
||||
@ -87,7 +87,7 @@ export declare namespace KcContext {
|
||||
};
|
||||
|
||||
export type Register = Template & {
|
||||
pageBasename: "register.ftl";
|
||||
pageId: "register.ftl";
|
||||
url: {
|
||||
registrationAction: string;
|
||||
};
|
||||
@ -120,7 +120,7 @@ export declare namespace KcContext {
|
||||
};
|
||||
|
||||
export type Info = Template & {
|
||||
pageBasename: "info.ftl";
|
||||
pageId: "info.ftl";
|
||||
messageHeader?: string;
|
||||
requiredActions?: ExtractAfterStartingWith<"requiredAction.",MessageKey>[];
|
||||
skipLink: boolean;
|
||||
@ -131,14 +131,13 @@ export declare namespace KcContext {
|
||||
}
|
||||
};
|
||||
|
||||
export type Error = Template & {
|
||||
pageId: "error.ftl"
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
type T = KcContext["pageBasename"];
|
||||
type U = Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
|
||||
|
||||
doExtends<T, U>();
|
||||
doExtends<U, T>();
|
||||
}
|
||||
doExtends<KcContext["pageId"], PageId>();
|
||||
doExtends<PageId, KcContext["pageId"]>();
|
||||
|
||||
export const kcContext = id<KcContext | undefined>((window as any)[ftlValuesGlobalName]);
|
||||
|
Reference in New Issue
Block a user