UNPKG

terriajs

Version:

Geospatial data visualization platform.

78 lines (67 loc) 2.76 kB
'use strict'; import React from 'react'; import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import ObserveModelMixin from '../ObserveModelMixin'; import defined from 'terriajs-cesium/Source/Core/defined'; import classNames from 'classnames'; import MenuPanel from '../StandardUserInterface/customizable/MenuPanel.jsx'; import Styles from './help-panel.scss'; import DropdownStyles from '../Map/Panels/panel.scss'; import helpIcon from '../../../wwwroot/images/icons/help.svg'; const HelpMenuPanel = createReactClass({ displayName: 'HelpMenuPanel', mixins: [ObserveModelMixin], propTypes: { helpViewState: PropTypes.object.isRequired, helpSequences: PropTypes.object.isRequired, viewState: PropTypes.object.isRequired }, getInitialState() { return { isOpen: false }; }, onOpenChanged(open) { this.setState({ isOpen: open }); }, help(sequence) { this.props.helpViewState.currentSequence = sequence; }, render() { const dropdownTheme = { btn: Styles.btnShare, outer: Styles.sharePanel, inner: Styles.dropdownInner, icon: helpIcon }; return ( <MenuPanel theme={dropdownTheme} btnText="Help" viewState={this.props.viewState} btnTitle="get help" onOpenChanged={this.onOpenChanged} forceClosed={defined(this.props.helpViewState.currentSequence)} smallScreen={this.props.viewState.useSmallScreenInterface}> <If condition={this.state.isOpen}> <div className={classNames(Styles.viewer, DropdownStyles.section)}> <label className={DropdownStyles.heading}>{this.props.helpSequences.menuTitle}</label> <ul className={Styles.viewerSelector}> <For each="sequence" index="i" of={this.props.helpSequences.sequences}> <li key={i} className={Styles.listItem}> <button onClick={this.help.bind(this, {sequence}.sequence)} className={Styles.btnViewer}> {sequence.title} </button> </li> </For> </ul> </div> </If> </MenuPanel> ); }, }); export default HelpMenuPanel;