Skip to content

Commit

Permalink
Implement a context menu for pilots list items
Browse files Browse the repository at this point in the history
  • Loading branch information
markerikson committed Jul 21, 2017
1 parent 958a2c3 commit 70208ea
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 3 deletions.
5 changes: 4 additions & 1 deletion src/features/contextMenus/ContextMenuManager.jsx
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@ import {connect} from "react-redux";
import Portal from 'react-portal'; import Portal from 'react-portal';


import ContextMenu from "./ContextMenu"; import ContextMenu from "./ContextMenu";

import TestContextMenu from "./TestContextMenu"; import TestContextMenu from "./TestContextMenu";
import PilotsListItemMenu from "features/pilots/PilotsList/PilotsListItemMenu";


import {selectContextMenu} from "./contextMenuSelectors"; import {selectContextMenu} from "./contextMenuSelectors";


const menuTypes = { const menuTypes = {
TestContextMenu TestContextMenu,
PilotsListItemMenu
}; };




Expand Down
43 changes: 43 additions & 0 deletions src/features/pilots/PilotsList/PilotsListItemMenu.jsx
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,43 @@
import React, { Component } from 'react'
import {connect} from "react-redux";
import { Menu } from 'semantic-ui-react'

import {selectPilot} from "../pilotsActions";
import {deleteEntity} from "features/entities/entityActions";
import {hideContextMenu} from "features/contextMenus/contextMenuActions";

const actions = {
selectPilot,
deleteEntity,
hideContextMenu,
}

export class PilotsListItemMenu extends Component {
onSelectClicked = () => {
this.props.selectPilot(this.props.pilotId);
this.props.hideContextMenu();
}

onDeleteClicked = () => {
this.props.deleteEntity("Pilot", this.props.pilotId);
this.props.hideContextMenu();
}

render() {
return (
<Menu vertical>
<Menu.Item>
<Menu.Header>Pilot: {this.props.text} </Menu.Header>

<Menu.Menu>
<Menu.Item onClick={this.onSelectClicked}>Select Pilot</Menu.Item>
<Menu.Item onClick={this.onDeleteClicked}>Delete Pilot</Menu.Item>
</Menu.Menu>
</Menu.Item>
</Menu>
)
}
}


export default connect(null, actions)(PilotsListItemMenu);
14 changes: 12 additions & 2 deletions src/features/pilots/PilotsList/PilotsListRow.jsx
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import _ from "lodash";


import {getEntitiesSession} from "features/entities/entitySelectors"; import {getEntitiesSession} from "features/entities/entitySelectors";
import {deleteEntity} from "features/entities/entityActions"; import {deleteEntity} from "features/entities/entityActions";
import {showContextMenu} from "features/contextMenus/contextMenuActions";




const mapState = (state, ownProps) => { const mapState = (state, ownProps) => {
Expand Down Expand Up @@ -45,10 +46,11 @@ const mapState = (state, ownProps) => {


const actions = { const actions = {
deleteEntity, deleteEntity,
showContextMenu,
}; };




const PilotsListRow = ({pilot={}, onPilotClicked=_.noop, selected, deleteEntity}) => { const PilotsListRow = ({pilot={}, onPilotClicked=_.noop, selected, deleteEntity, showContextMenu}) => {
const { const {
id = null, id = null,
name = "", name = "",
Expand All @@ -67,9 +69,17 @@ const PilotsListRow = ({pilot={}, onPilotClicked=_.noop, selected, deleteEntity}


const onRowClicked = () => onPilotClicked(id); const onRowClicked = () => onPilotClicked(id);


const onRowRightClicked = (e) => {
e.preventDefault();
e.stopPropagation();

const {pageX, pageY} = e;
showContextMenu(pageX, pageY, "PilotsListItemMenu", {text: pilot.name, pilotId : id});
}



return ( return (
<Table.Row onClick={onRowClicked} active={selected}> <Table.Row onClick={onRowClicked} onContextMenu={onRowRightClicked} active={selected}>
<Table.Cell> <Table.Cell>
{name} {name}
</Table.Cell> </Table.Cell>
Expand Down

0 comments on commit 70208ea

Please sign in to comment.