From 982137350444177a09761d35417c79674ee82bba Mon Sep 17 00:00:00 2001 From: Joey Payne Date: Thu, 18 Feb 2016 20:34:05 -0700 Subject: [PATCH] State progress update --- app/main.jsx | 96 +++++++++++++++++++----- app/modules/EntrySelector.jsx | 4 +- app/modules/LibraryNav.jsx | 134 +++++++++++++++++++++++++--------- 3 files changed, 179 insertions(+), 55 deletions(-) diff --git a/app/main.jsx b/app/main.jsx index f72f73c..d58144a 100644 --- a/app/main.jsx +++ b/app/main.jsx @@ -1,13 +1,21 @@ import React from 'react' import injectTapEventPlugin from "react-tap-event-plugin" injectTapEventPlugin() -import ThemeManager from 'material-ui/lib/styles/theme-manager' +import getMuiTheme from 'material-ui/lib/styles/getMuiTheme' import ReactDOM from 'react-dom' import LibraryNav from 'LibraryNav' import Styles from 'material-ui/lib/styles' import Rethink from 'rethinkdbdash' +import Edit from 'material-ui/lib/svg-icons/editor/mode-edit' +import Delete from 'material-ui/lib/svg-icons/action/delete' +import Divider from 'material-ui/lib/divider' import moment from 'moment' +import mui from 'material-ui' +const { + Popover, + Menu, + MenuItem} = mui const DefaultRawTheme = Styles.LightRawTheme @@ -28,23 +36,19 @@ function createTables(){ r.tableCreate('accounts').run().error(function(){}) } + class Main extends React.Component { - constructor(props){ - super(props) + constructor(props, context){ + super(props, context) createTables() - this.state = {entries: []} - } - - static get childContextTypes(){ - return {muiTheme: React.PropTypes.object} - } - - getChildContext() { - return { - muiTheme: ThemeManager.getMuiTheme(DefaultRawTheme) + this.state = { + entries: [], + contextMenuOpen: false, + contextMenuItems: this.context.contextMenuItems } } + entriesTapped = () => { r.table('notes').getAll('jyapayne@gmail.com', {index: 'account_id'}).run().then( function(notes){ @@ -53,20 +57,76 @@ class Main extends React.Component { ) }; + handleRequestClose = () => { + this.setState({ + contextMenuOpen: false, + }) + }; + + tapped = () => { + console.log('tapped') + console.log(this.context.contextMenuItems) + }; + render() { return ( - +
+
+ + + {this.state.contextMenuItems.map(function (el, i){ + return el; + })} + + + + +
) } } +class S extends React.Component { + static get childContextTypes(){ + return {muiTheme: React.PropTypes.object, + contextMenuItems: React.PropTypes.array} + } + + getChildContext() { + return { + muiTheme: getMuiTheme(DefaultRawTheme), + contextMenuItems: [] + } + } + + render(){ + return
+ } + +} + + +Main.contextTypes = { + contextMenuItems: React.PropTypes.array.isRequired +}; + ReactDOM.render( -
, + , document.getElementById('main') ); diff --git a/app/modules/EntrySelector.jsx b/app/modules/EntrySelector.jsx index 16f8dc4..847ef93 100644 --- a/app/modules/EntrySelector.jsx +++ b/app/modules/EntrySelector.jsx @@ -1,7 +1,7 @@ import React from 'react' import mui from 'material-ui' -import ThemeManager from 'material-ui/lib/styles/theme-manager' +import getMuiTheme from 'material-ui/lib/styles/getMuiTheme' import List from 'material-ui/lib/lists/list' import ListItem from 'material-ui/lib/lists/list-item' @@ -46,7 +46,7 @@ export default class EntrySelector extends React.Component { getChildContext() { return { - muiTheme: ThemeManager.getMuiTheme(DefaultRawTheme) + muiTheme: getMuiTheme(DefaultRawTheme) } } diff --git a/app/modules/LibraryNav.jsx b/app/modules/LibraryNav.jsx index d751a80..f4774df 100644 --- a/app/modules/LibraryNav.jsx +++ b/app/modules/LibraryNav.jsx @@ -1,7 +1,7 @@ import React from 'react' import mui from 'material-ui' -import ThemeManager from 'material-ui/lib/styles/theme-manager' +import getMuiTheme from 'material-ui/lib/styles/getMuiTheme' import styles from 'material-ui/lib/styles' import List from 'material-ui/lib/lists/list' @@ -11,6 +11,7 @@ import NoteBook from 'material-ui/lib/svg-icons/action/class' import History from 'material-ui/lib/svg-icons/action/history' import AddCircleOutline from 'material-ui/lib/svg-icons/content/add-circle-outline' import Folder from 'material-ui/lib/svg-icons/file/folder' +import Edit from 'material-ui/lib/svg-icons/editor/mode-edit' import Delete from 'material-ui/lib/svg-icons/action/delete' import Divider from 'material-ui/lib/divider' import { SelectableContainerEnhance } from 'material-ui/lib/hoc/selectable-enhance' @@ -24,9 +25,11 @@ const {AppBar, EnhancedButton, NavigationClose, Menu, + MenuItem, Mixins, RaisedButton, FlatButton, + Popover, Badge, TextField, Dialog, @@ -66,35 +69,41 @@ const DefaultRawTheme = Styles.LightRawTheme export default class LibraryNav extends React.Component { - constructor(props){ - super(props) + constructor(props, context){ + super(props, context) + console.log(this.state) this.state = { open: false, navItems: [ { 'name': 'Entries', 'icon': , - 'notes': 10 + 'notes': 10, + 'clicked': this.props.entriesTapped || this.entriesTapped }, { 'name': 'Starred', 'icon': , - 'notes': 1 + 'notes': 1, + 'clicked': this.props.starredTapped || this.starredTapped }, { 'name': 'Recents', 'icon': , - 'notes': 10 + 'notes': 10, + 'clicked': this.props.recentsTapped || this.recentsTapped }, { 'name': 'Trash', 'icon': , - 'notes': 0 + 'notes': 0, + 'clicked': this.props.trashTapped || this.trashTapped }, { 'name': 'All Notes', 'icon': , - 'notes': 0 + 'notes': 0, + 'clicked': this.props.allNotesTapped || this.allNotesTapped }, ], @@ -109,9 +118,10 @@ export default class LibraryNav extends React.Component { return {muiTheme: React.PropTypes.object} } + getChildContext() { return { - muiTheme: ThemeManager.getMuiTheme(DefaultRawTheme) + muiTheme: getMuiTheme(DefaultRawTheme) } } @@ -142,32 +152,81 @@ export default class LibraryNav extends React.Component { newNotebookTyped = (i) => { }; + menuItemClicked = (i, ev) => { + var nativeEvent = ev.nativeEvent + if(nativeEvent.button == 2){ + //Right click + + } + }; + + noteBookTapped = (i, ev) => { + var nativeEvent = ev.nativeEvent + if(nativeEvent.button == 2){ + //Right click + var x = nativeEvent.pageX + var y = nativeEvent.pageY + this.context.contextMenuItems = [ + } />, + , + } /> + ] + + this.setState({ + popTop: y, + popLeft: x, + open: true + }) + } + + }; + + handleRequestClose = () => { + this.setState({ + open: false, + }) + }; + render(){ return ( -
- - {this.state.navItems.map(function(item, i){ - return } - value={i} - className="noselect"/>; - })} - - - -
NoteBooks
- - - -
}> +
+
+ + + } /> + + } /> + + + + {this.state.navItems.map((item, i) => { + return } + value={i} + onTouchTap={this.menuItemClicked.bind(this, i)} + className="noselect"/>; + })} + + + +
NoteBooks
+ + + +
}> {this.state.notebooks.map((notebook, i) =>{ var l = null @@ -194,16 +253,21 @@ export default class LibraryNav extends React.Component { key={i} primaryText={notebook.title} className="noselect" + onTouchTap={this.noteBookTapped.bind(this, i)} leftIcon={} rightIcon={} /> } return l })} - + - + ) } } +LibraryNav.contextTypes = { + contextMenuItems: React.PropTypes.array.isRequired +}; +