aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/components/ContentView/ViewSelector.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'web/src/js/components/ContentView/ViewSelector.jsx')
-rw-r--r--web/src/js/components/ContentView/ViewSelector.jsx92
1 files changed, 63 insertions, 29 deletions
diff --git a/web/src/js/components/ContentView/ViewSelector.jsx b/web/src/js/components/ContentView/ViewSelector.jsx
index c5670328..1959ec1e 100644
--- a/web/src/js/components/ContentView/ViewSelector.jsx
+++ b/web/src/js/components/ContentView/ViewSelector.jsx
@@ -1,48 +1,82 @@
-import React, { PropTypes } from 'react'
+import React, { PropTypes, Component } from 'react'
import classnames from 'classnames'
import { connect } from 'react-redux'
import * as ContentViews from './ContentViews'
-import { setContentView } from "../../ducks/ui/flow";
+import { setContentView, setContentViewSelectorOpen } from "../../ducks/ui/flow";
-function ViewButton({ name, setContentView, children, activeView }) {
+function ViewItem({ name, setContentView, children }) {
return (
- <button
- onClick={() => setContentView(name)}
- className={classnames('btn btn-default', { active: name === activeView })}>
- {children}
- </button>
+ <li>
+ <a href="#" onClick={() => setContentView(name)}>
+ {children}
+ </a>
+ </li>
)
}
-ViewButton = connect(state => ({
- activeView: state.ui.flow.contentView
-}), {
- setContentView
-})(ViewButton)
-ViewSelector.propTypes = {
- message: PropTypes.object.isRequired,
-}
-function ViewSelector({contentViews, isEdit }) {
- let edit = ContentViews.Edit.displayName
- return (
- <div className="view-selector btn-group btn-group-xs">
+/*ViewSelector.propTypes = {
+ contentViews: PropTypes.array.isRequired,
+ activeView: PropTypes.string.isRequired,
+ isEdit: PropTypes.bool.isRequired,
+ isContentViewSelectorOpen: PropTypes.bool.isRequired,
+ setContentViewSelectorOpen: PropTypes.func.isRequired
+}*/
- {contentViews.map(name =>
- <ViewButton key={name} name={name}>{name.toLowerCase().replace('_', ' ')}</ViewButton>
- )}
- {isEdit &&
- <ViewButton key={edit} name={edit}>{edit.toLowerCase()}</ViewButton>
- }
+class ViewSelector extends Component {
+ constructor(props, context) {
+ super(props, context)
+ this.close = this.close.bind(this)
+ }
+ close() {
+ this.props.setContentViewSelectorOpen(false)
+ document.removeEventListener('click', this.close)
+ }
- </div>
- )
+ onDropdown(e){
+ e.preventDefault()
+ this.props.setContentViewSelectorOpen(!this.props.isContentViewSelectorOpen)
+ document.addEventListener('click', this.close)
+ }
+
+ render() {
+ const {contentViews, activeView, isEdit, isContentViewSelectorOpen, setContentViewSelectorOpen, setContentView} = this.props
+ let edit = ContentViews.Edit.displayName
+
+ return (
+ <div className={classnames('dropup pull-left', { open: isContentViewSelectorOpen })}>
+ <a className="btn btn-default btn-xs"
+ onClick={ e => this.onDropdown(e) }
+ href="#">
+ <b>View:</b> {activeView}<span className="caret"></span>
+ </a>
+ <ul className="dropdown-menu" role="menu">
+ {contentViews.map(name =>
+ <ViewItem key={name} setContentView={setContentView} name={name}>
+ {name.toLowerCase().replace('_', ' ')}
+ </ViewItem>
+ )}
+ {isEdit &&
+ <ViewItem key={edit} setContentView={setContentView} name={edit}>
+ {edit.toLowerCase()}
+ </ViewItem>
+ }
+ </ul>
+ </div>
+ )
+ }
}
export default connect (
state => ({
contentViews: state.settings.contentViews,
+ activeView: state.ui.flow.contentView,
isEdit: !!state.ui.flow.modifiedFlow,
- }))(ViewSelector)
+ isContentViewSelectorOpen: state.ui.flow.isContentViewSelectorOpen
+ }), {
+ setContentView,
+ setContentViewSelectorOpen
+ }
+)(ViewSelector)