LiberTEM/LiberTEM

View on GitHub
client/src/compoundAnalysis/components/layouts/AnalysisLayoutThreeCol.tsx

Summary

Maintainability
C
1 day
Test Coverage
import * as React from "react";
import { Grid, Header, Icon, Segment } from "semantic-ui-react";

interface AnalysisLayoutThreeColProps {
    title: string,
    subtitle: React.ReactNode,
    left: React.ReactNode,
    mid: React.ReactNode,
    right: React.ReactNode,
    toolbar?: React.ReactNode,
    title1: string,
    title2: React.ReactNode,
    title3: string,
}

type MergedProps = AnalysisLayoutThreeColProps;

const AnalysisLayoutThreeCol: React.FC<MergedProps> = ({
    title, subtitle,
    left, mid, right,
    toolbar, title1, title2, title3
}) => (
    <>
        <Header as='h3' attached="top">
            <Icon name="cog" />
            <Header.Content>{title}</Header.Content>
        </Header>
        <Segment attached>
            <Grid columns={3}>
                <Grid.Row>
                    <Grid.Column width={5}>
                        <p>{title1}</p>
                    </Grid.Column>

                    <Grid.Column width={5}>
                        <p>{title2}</p>
                    </Grid.Column>

                    <Grid.Column width={6}>
                        <p>{title3}</p>
                    </Grid.Column>
                </Grid.Row>

                <Grid.Row>
                    <Grid.Column width={5}>
                        {left}
                    </Grid.Column>

                    <Grid.Column width={5}>
                        {mid}
                    </Grid.Column>

                    <Grid.Column width={6}>
                        {right}
                    </Grid.Column>

                </Grid.Row>

                <Grid.Row>
                    <Grid.Column width={10}>
                        <p>{subtitle}</p>
                    </Grid.Column>

                    <Grid.Column width={6} />
                </Grid.Row>
            </Grid>
        </Segment>
        {toolbar}
    </>
);

export default AnalysisLayoutThreeCol