From 637bce7ba73c6a0a3d898b9b5e7ad13dc992ee35 Mon Sep 17 00:00:00 2001 From: Sascha Date: Wed, 31 Mar 2021 21:00:36 +0200 Subject: Fix and improve rendering of markdown elements - Markdown will no be rendered - Render text always below an image - block quotes wont be just indented text --- webui/src/components/Content/BlockQuoteTag.tsx | 21 +++++++++++++++++++++ webui/src/components/Content/ImageTag.tsx | 9 ++++++--- webui/src/components/Content/index.tsx | 10 ++++++---- 3 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 webui/src/components/Content/BlockQuoteTag.tsx (limited to 'webui/src/components/Content') diff --git a/webui/src/components/Content/BlockQuoteTag.tsx b/webui/src/components/Content/BlockQuoteTag.tsx new file mode 100644 index 00000000..18c34d8a --- /dev/null +++ b/webui/src/components/Content/BlockQuoteTag.tsx @@ -0,0 +1,21 @@ +import React from 'react'; + +import { makeStyles } from '@material-ui/core/styles'; + +const useStyles = makeStyles((theme) => ({ + tag: { + color: theme.palette.text.secondary, + borderLeftWidth: '0.5ch', + borderLeftStyle: 'solid', + borderLeftColor: theme.palette.text.secondary, + marginLeft: 0, + paddingLeft: '0.5rem', + }, +})); + +const BlockQuoteTag = (props: React.HTMLProps) => { + const classes = useStyles(); + return
; +}; + +export default BlockQuoteTag; diff --git a/webui/src/components/Content/ImageTag.tsx b/webui/src/components/Content/ImageTag.tsx index 70ee1bc0..29b01da3 100644 --- a/webui/src/components/Content/ImageTag.tsx +++ b/webui/src/components/Content/ImageTag.tsx @@ -14,9 +14,12 @@ const ImageTag = ({ }: React.ImgHTMLAttributes) => { const classes = useStyles(); return ( - - {alt} - + <> + + {alt} + +
+ ); }; diff --git a/webui/src/components/Content/index.tsx b/webui/src/components/Content/index.tsx index 56e52e1e..75360bb6 100644 --- a/webui/src/components/Content/index.tsx +++ b/webui/src/components/Content/index.tsx @@ -4,23 +4,25 @@ import parse from 'remark-parse'; import remark2react from 'remark-react'; import unified from 'unified'; +import BlockQuoteTag from './BlockQuoteTag'; import ImageTag from './ImageTag'; import PreTag from './PreTag'; type Props = { markdown: string }; const Content: React.FC = ({ markdown }: Props) => { - const processor = unified() + const content = unified() .use(parse) .use(html) .use(remark2react, { remarkReactComponents: { img: ImageTag, pre: PreTag, + blockquote: BlockQuoteTag, }, - }); + }) + .processSync(markdown).result; - const contents: React.ReactNode = processor.processSync(markdown).contents; - return <>{contents}; + return <>{content}; }; export default Content; -- cgit