2019-05-15 09:15:07 +02:00
|
|
|
/**
|
|
|
|
* React Component for displaying a single Source-File as an accordion.
|
|
|
|
*
|
|
|
|
* The header of the accordion contains the Source-Files's name and level,
|
|
|
|
* and the accordion's panel contains the Source-File's description.
|
|
|
|
*/
|
|
|
|
import * as React from "react";
|
|
|
|
|
2021-09-14 02:37:35 +02:00
|
|
|
import { BBAccordion } from "./BBAccordion";
|
2019-05-15 09:15:07 +02:00
|
|
|
|
|
|
|
import { SourceFile } from "../../SourceFile/SourceFile";
|
|
|
|
|
|
|
|
type IProps = {
|
2021-09-05 01:09:30 +02:00
|
|
|
level: number;
|
|
|
|
sf: SourceFile;
|
|
|
|
};
|
2019-05-15 09:15:07 +02:00
|
|
|
|
|
|
|
export function SourceFileAccordion(props: IProps): React.ReactElement {
|
2021-09-05 01:09:30 +02:00
|
|
|
const maxLevel = props.sf.n === 12 ? "∞" : "3";
|
2019-05-15 09:15:07 +02:00
|
|
|
|
2021-09-05 01:09:30 +02:00
|
|
|
return (
|
2021-09-13 18:44:46 +02:00
|
|
|
<BBAccordion
|
2021-09-05 01:09:30 +02:00
|
|
|
headerContent={
|
|
|
|
<>
|
|
|
|
{props.sf.name}
|
|
|
|
<br />
|
|
|
|
{`Level ${props.level} / ${maxLevel}`}
|
|
|
|
</>
|
|
|
|
}
|
|
|
|
panelContent={<p dangerouslySetInnerHTML={{ __html: props.sf.info }}></p>}
|
|
|
|
/>
|
|
|
|
);
|
2019-05-15 09:15:07 +02:00
|
|
|
}
|