terriajs
Version:
Geospatial data visualization platform.
61 lines (54 loc) • 1.57 kB
JSX
;
const React = require("react");
const createReactClass = require("create-react-class");
const PropTypes = require("prop-types");
import Styles from "./full_screen_button.scss";
import classNames from "classnames";
import Icon from "../../../Styled/Icon";
// The button to make the map full screen and hide the workbench.
const FullScreenButton = createReactClass({
displayName: "FullScreenButton",
propTypes: {
terria: PropTypes.object,
viewState: PropTypes.object.isRequired,
animationDuration: PropTypes.number // Defaults to 1 millisecond.
},
getInitialState() {
return {
isActive: false
};
},
toggleFullScreen() {
this.props.viewState.setIsMapFullScreen(
!this.props.viewState.isMapFullScreen
);
},
renderButtonText() {
if (this.props.viewState.isMapFullScreen) {
return <span className={Styles.exit}>Show Workbench</span>;
} else {
return <Icon glyph={Icon.GLYPHS.expand} />;
}
},
render() {
const btnClassName = classNames(Styles.btn, {
[Styles.isActive]: this.props.viewState.isMapFullScreen
});
const btnTitle = this.props.viewState.isMapFullScreen
? "Show workbench"
: "Hide workbench";
return (
<div className={Styles.fullScreen}>
<button
type="button"
onClick={this.toggleFullScreen}
title={btnTitle}
className={btnClassName}
>
<span>{this.renderButtonText()}</span>
</button>
</div>
);
}
});
module.exports = FullScreenButton;