Render Markdown in Terms
This commit is contained in:
@ -11,6 +11,7 @@ import type { I18n } from "../i18n";
|
|||||||
import memoize from "memoizee";
|
import memoize from "memoizee";
|
||||||
import { useConst } from "powerhooks/useConst";
|
import { useConst } from "powerhooks/useConst";
|
||||||
import { useConstCallback } from "powerhooks/useConstCallback";
|
import { useConstCallback } from "powerhooks/useConstCallback";
|
||||||
|
import { Markdown } from "../tools/Markdown";
|
||||||
|
|
||||||
export const evtTermMarkdown = Evt.create<string | undefined>(undefined);
|
export const evtTermMarkdown = Evt.create<string | undefined>(undefined);
|
||||||
|
|
||||||
@ -74,7 +75,7 @@ const Terms = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.Te
|
|||||||
headerNode={msg("termsTitle")}
|
headerNode={msg("termsTitle")}
|
||||||
formNode={
|
formNode={
|
||||||
<>
|
<>
|
||||||
<div id="kc-terms-text">{evtTermMarkdown.state}</div>
|
<div id="kc-terms-text">{evtTermMarkdown.state && <Markdown>{evtTermMarkdown.state}</Markdown>}</div>
|
||||||
<form className="form-actions" action={url.loginAction} method="POST">
|
<form className="form-actions" action={url.loginAction} method="POST">
|
||||||
<input
|
<input
|
||||||
className={cx(
|
className={cx(
|
||||||
|
@ -426,7 +426,6 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "update-user-profile.ftl",
|
"pageId": "update-user-profile.ftl",
|
||||||
"profile": {
|
"profile": {
|
||||||
"context": "REGISTRATION_PROFILE" as const,
|
|
||||||
attributes,
|
attributes,
|
||||||
attributesByName
|
attributesByName
|
||||||
}
|
}
|
||||||
@ -435,6 +434,7 @@ export const kcContextMocks: KcContextBase[] = [
|
|||||||
...kcContextCommonMock,
|
...kcContextCommonMock,
|
||||||
"pageId": "idp-review-user-profile.ftl",
|
"pageId": "idp-review-user-profile.ftl",
|
||||||
"profile": {
|
"profile": {
|
||||||
|
context: "IDP_REVIEW",
|
||||||
attributes,
|
attributes,
|
||||||
attributesByName
|
attributesByName
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import "minimal-polyfills/Object.fromEntries";
|
import "minimal-polyfills/Object.fromEntries";
|
||||||
//NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35
|
//NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35
|
||||||
import React, { useEffect, useState, useRef } from "react";
|
import React, { useEffect, useState, useRef } from "react";
|
||||||
import ReactMarkdown from "react-markdown";
|
|
||||||
import type baseMessages from "./generated_messages/18.0.1/login/en";
|
import type baseMessages from "./generated_messages/18.0.1/login/en";
|
||||||
import { assert } from "tsafe/assert";
|
import { assert } from "tsafe/assert";
|
||||||
import type { KcContextBase } from "../getKcContext/KcContextBase";
|
import type { KcContextBase } from "../getKcContext/KcContextBase";
|
||||||
|
import { Markdown } from "../tools/Markdown";
|
||||||
|
|
||||||
export const fallbackLanguageTag = "en";
|
export const fallbackLanguageTag = "en";
|
||||||
|
|
||||||
@ -234,9 +234,9 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
return doRenderMarkdown ? (
|
return doRenderMarkdown ? (
|
||||||
<ReactMarkdown allowDangerousHtml renderers={key === "termsText" ? undefined : { "paragraph": "span" }}>
|
<Markdown allowDangerousHtml renderers={{ "paragraph": "span" }}>
|
||||||
{messageWithArgsInjectedIfAny}
|
{messageWithArgsInjectedIfAny}
|
||||||
</ReactMarkdown>
|
</Markdown>
|
||||||
) : (
|
) : (
|
||||||
messageWithArgsInjectedIfAny
|
messageWithArgsInjectedIfAny
|
||||||
);
|
);
|
||||||
|
3
src/lib/tools/Markdown.ts
Normal file
3
src/lib/tools/Markdown.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import Markdown from "react-markdown";
|
||||||
|
|
||||||
|
export { Markdown };
|
Reference in New Issue
Block a user