diff --git a/src/account/Template.tsx b/src/account/Template.tsx index 4ec3f002..beb69689 100644 --- a/src/account/Template.tsx +++ b/src/account/Template.tsx @@ -1,12 +1,15 @@ import { clsx } from "keycloakify/tools/clsx"; import { usePrepareTemplate } from "keycloakify/lib/usePrepareTemplate"; import { type TemplateProps } from "keycloakify/account/TemplateProps"; +import { useGetClassName } from "keycloakify/account/lib/useGetClassName"; import type { KcContext } from "./kcContext"; import type { I18n } from "./i18n"; import { assert } from "keycloakify/tools/assert"; export default function Template(props: TemplateProps) { - const { kcContext, i18n, doUseDefaultCss, bodyClass, active, children } = props; + const { kcContext, i18n, doUseDefaultCss, active, classes, children } = props; + + const { getClassName } = useGetClassName({ doUseDefaultCss, classes }); const { msg, changeLocale, labelBySupportedLanguageTag, currentLanguageTag } = i18n; @@ -18,7 +21,7 @@ export default function Template(props: TemplateProps) { "stylesCommon": ["node_modules/patternfly/dist/css/patternfly.min.css", "node_modules/patternfly/dist/css/patternfly-additions.min.css"], "styles": ["css/account.css"], "htmlClassName": undefined, - "bodyClassName": clsx("admin-console", "user", bodyClass) + "bodyClassName": clsx("admin-console", "user", getClassName("kcBodyClass")) }); if (!isReady) { diff --git a/src/account/TemplateProps.ts b/src/account/TemplateProps.ts index 32d37f1e..86f108b5 100644 --- a/src/account/TemplateProps.ts +++ b/src/account/TemplateProps.ts @@ -7,6 +7,8 @@ export type TemplateProps>; children: ReactNode; }; + +export type ClassKey = "kcBodyClass" | "kcButtonClass" | "kcButtonPrimaryClass" | "kcButtonLargeClass" | "kcButtonDefaultClass"; diff --git a/src/account/kcContext/KcContext.ts b/src/account/kcContext/KcContext.ts index 507f5468..f722390e 100644 --- a/src/account/kcContext/KcContext.ts +++ b/src/account/kcContext/KcContext.ts @@ -51,6 +51,12 @@ export declare namespace KcContext { get: (fieldName: string) => string; exists: (fieldName: string) => boolean; }; + account: { + email?: string; + firstName: string; + lastName?: string; + username?: string; + }; }; export type Password = Common & { @@ -71,10 +77,6 @@ export declare namespace KcContext { editUsernameAllowed: boolean; }; stateChecker: string; - account: { - firstName: string; - lastName?: string; - }; }; } diff --git a/src/account/kcContext/kcContextMocks.ts b/src/account/kcContext/kcContextMocks.ts index 57a8cd03..7915006d 100644 --- a/src/account/kcContext/kcContextMocks.ts +++ b/src/account/kcContext/kcContextMocks.ts @@ -139,7 +139,13 @@ export const kcContextCommonMock: KcContext.Common = { "log": true, "passwordUpdateSupported": true }, - "referrer": undefined + "referrer": undefined, + "account": { + "firstName": "john", + "lastName": "doe", + "email": "john.doe@code.gouv.fr", + "username": "doe_j" + } }; export const kcContextMocks: KcContext[] = [ @@ -163,10 +169,6 @@ export const kcContextMocks: KcContext[] = [ "registrationEmailAsUsername": true, "editUsernameAllowed": true }, - "stateChecker": "", - "account": { - "firstName": "john", - "lastName": "doe" - } + "stateChecker": "" }) ]; diff --git a/src/account/lib/useGetClassName.ts b/src/account/lib/useGetClassName.ts new file mode 100644 index 00000000..0febe339 --- /dev/null +++ b/src/account/lib/useGetClassName.ts @@ -0,0 +1,12 @@ +import { createUseClassName } from "keycloakify/lib/useGetClassName"; +import type { ClassKey } from "keycloakify/account/TemplateProps"; + +export const { useGetClassName } = createUseClassName({ + "defaultClasses": { + "kcBodyClass": undefined, + "kcButtonClass": "btn", + "kcButtonPrimaryClass": "btn-primary", + "kcButtonLargeClass": "btn-lg", + "kcButtonDefaultClass": "btn-default" + } +}); diff --git a/src/account/pages/Account.tsx b/src/account/pages/Account.tsx index 43c018c5..89a10034 100644 --- a/src/account/pages/Account.tsx +++ b/src/account/pages/Account.tsx @@ -1,6 +1,6 @@ import { clsx } from "keycloakify/tools/clsx"; -import { type PageProps, defaultClasses } from "keycloakify/account/pages/PageProps"; -import { useGetClassName } from "keycloakify/lib/useGetClassName"; +import type { PageProps } from "keycloakify/account/pages/PageProps"; +import { useGetClassName } from "keycloakify/account/lib/useGetClassName"; import type { KcContext } from "../kcContext"; import type { I18n } from "../i18n"; @@ -8,8 +8,11 @@ export default function LogoutConfirm(props: PageProps +