terriajs
Version:
Geospatial data visualization platform.
81 lines (70 loc) • 2.4 kB
JSX
import { observer } from "mobx-react";
import PropTypes from "prop-types";
import React from "react";
import { withTranslation } from "react-i18next";
import { withTheme } from "styled-components";
import styled from "styled-components";
import StyledHtml from "./StyledHtml";
import Box, { BoxSpan } from "../../../../Styled/Box";
import Button from "../../../../Styled/Button";
import Spacing from "../../../../Styled/Spacing";
import Text from "../../../../Styled/Text";
import { applyTranslationIfExists } from "../../../../Language/languageHelpers";
const UlTrainerItems = styled(Box).attrs({
as: "ul"
})`
${(p) => p.theme.removeListStyles()}
`;
const TrainerButton = styled(Button)``;
class TrainerPane extends React.Component {
static displayName = "TrainerPane";
static propTypes = {
viewState: PropTypes.object.isRequired,
content: PropTypes.object.isRequired,
t: PropTypes.func,
i18n: PropTypes.object.isRequired
};
constructor(props) {
super(props);
}
render() {
const { content, i18n, viewState } = this.props;
const { trainerItems, markdownText } = content;
return (
<Text textDark noFontSize>
<Box column>
{markdownText && (
<StyledHtml viewState={viewState} markdown={markdownText} />
)}
{trainerItems?.map && (
<UlTrainerItems column fullWidth justifySpaceBetween>
{trainerItems.map((item, index) => (
<li key={index}>
<TrainerButton
secondary
fullWidth
onClick={() => {
viewState.hideHelpPanel();
viewState.setSelectedTrainerItem(content.itemName);
viewState.setCurrentTrainerItemIndex(index);
viewState.setTrainerBarVisible(true);
}}
>
<BoxSpan centered>
<BoxSpan centered>
{applyTranslationIfExists(item.title, i18n)}
</BoxSpan>
</BoxSpan>
</TrainerButton>
<Spacing bottom={2} />
</li>
))}
</UlTrainerItems>
)}
</Box>
</Text>
);
}
}
export default withTranslation()(withTheme(TrainerPane));