mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 23:15:43 +01:00
refactor markdownviewer // fix padding
This commit is contained in:
@@ -1,16 +1,21 @@
|
||||
import React, { FC, useEffect, useState } from "react";
|
||||
import { getContent } from "./SourcecodeViewer";
|
||||
import { Link, File } from "@scm-manager/ui-types";
|
||||
import { Loading, ErrorNotification, MarkdownView, Button, Level } from "@scm-manager/ui-components";
|
||||
import { Loading, ErrorNotification, MarkdownView } from "@scm-manager/ui-components";
|
||||
import styled from "styled-components";
|
||||
|
||||
type Props = {
|
||||
file: File;
|
||||
};
|
||||
|
||||
const MarkdownContent = styled.div`
|
||||
padding: 0.5rem;
|
||||
`;
|
||||
|
||||
const MarkdownViewer: FC<Props> = ({ file }) => {
|
||||
const [loading, setLoading] = useState<boolean>(true);
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [error, setError] = useState<Error | undefined>(undefined);
|
||||
const [content, setContent] = useState<string>("");
|
||||
const [content, setContent] = useState("");
|
||||
|
||||
useEffect(() => {
|
||||
getContent((file._links.self as Link).href)
|
||||
@@ -32,7 +37,11 @@ const MarkdownViewer: FC<Props> = ({ file }) => {
|
||||
return <ErrorNotification error={error} />;
|
||||
}
|
||||
|
||||
return <MarkdownView content={content} />;
|
||||
return (
|
||||
<MarkdownContent>
|
||||
<MarkdownView content={content} />
|
||||
</MarkdownContent>
|
||||
);
|
||||
};
|
||||
|
||||
export default MarkdownViewer;
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
import React, { FC, useState } from "react";
|
||||
import styled from "styled-components";
|
||||
import MarkdownViewer from "./MarkdownViewer";
|
||||
import SourcecodeViewer from "./SourcecodeViewer";
|
||||
import { File } from "@scm-manager/ui-types";
|
||||
import { Button } from "@scm-manager/ui-components";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
const ToggleButton = styled(Button)`
|
||||
max-width: 1rem;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0.25rem;
|
||||
z-index: 999;
|
||||
`;
|
||||
|
||||
const Container = styled.div`
|
||||
position: relative;
|
||||
`;
|
||||
|
||||
type Props = {
|
||||
file: File;
|
||||
};
|
||||
|
||||
const SwitchableMarkdownViewer: FC<Props> = ({ file }) => {
|
||||
const { t } = useTranslation("repos");
|
||||
const [renderMarkdown, setRenderMarkdown] = useState(true);
|
||||
|
||||
const toggleMarkdown = () => {
|
||||
setRenderMarkdown(!renderMarkdown);
|
||||
};
|
||||
|
||||
return (
|
||||
<Container>
|
||||
<ToggleButton
|
||||
color={renderMarkdown ? "link" : ""}
|
||||
action={toggleMarkdown}
|
||||
title={
|
||||
renderMarkdown
|
||||
? t("sources.content.toggleButton.showSources")
|
||||
: t("sources.content.toggleButton.showMarkdown")
|
||||
}
|
||||
>
|
||||
<i className="fab fa-markdown" />
|
||||
</ToggleButton>
|
||||
{renderMarkdown ? <MarkdownViewer file={file} /> : <SourcecodeViewer file={file} language={"MARKDOWN"} />}
|
||||
</Container>
|
||||
);
|
||||
};
|
||||
|
||||
export default SwitchableMarkdownViewer;
|
||||
Reference in New Issue
Block a user