aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/workspaces
diff options
context:
space:
mode:
authorLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-04-10 16:37:04 +0200
committerLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-04-10 16:37:04 +0200
commit664b59789ca032eaa393af52ff2559e173a9b0b5 (patch)
tree927a0ff9edf39dd999b7478a70f72ee82ca9fbde /src/features/workspaces
parentadd premium badge to workspace drawer headline (diff)
downloadferdium-app-664b59789ca032eaa393af52ff2559e173a9b0b5.tar.gz
ferdium-app-664b59789ca032eaa393af52ff2559e173a9b0b5.tar.zst
ferdium-app-664b59789ca032eaa393af52ff2559e173a9b0b5.zip
add context menu for workspace drawer items
Diffstat (limited to 'src/features/workspaces')
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.js1
-rw-r--r--src/features/workspaces/components/WorkspaceDrawerItem.js29
2 files changed, 30 insertions, 0 deletions
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js
index 64c98dc63..684e50dd0 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.js
+++ b/src/features/workspaces/components/WorkspaceDrawer.js
@@ -215,6 +215,7 @@ class WorkspaceDrawer extends Component {
215 workspaceActions.toggleWorkspaceDrawer(); 215 workspaceActions.toggleWorkspaceDrawer();
216 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); 216 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer');
217 }} 217 }}
218 onContextMenuEditClick={() => workspaceActions.edit({ workspace })}
218 services={getServicesForWorkspace(workspace)} 219 services={getServicesForWorkspace(workspace)}
219 /> 220 />
220 ))} 221 ))}
diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.js b/src/features/workspaces/components/WorkspaceDrawerItem.js
index 57f0754d9..59a2144d3 100644
--- a/src/features/workspaces/components/WorkspaceDrawerItem.js
+++ b/src/features/workspaces/components/WorkspaceDrawerItem.js
@@ -1,3 +1,4 @@
1import { remote } from 'electron';
1import React, { Component } from 'react'; 2import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
@@ -5,11 +6,17 @@ import injectSheet from 'react-jss';
5import classnames from 'classnames'; 6import classnames from 'classnames';
6import { defineMessages, intlShape } from 'react-intl'; 7import { defineMessages, intlShape } from 'react-intl';
7 8
9const { Menu } = remote;
10
8const messages = defineMessages({ 11const messages = defineMessages({
9 noServicesAddedYet: { 12 noServicesAddedYet: {
10 id: 'workspaceDrawer.item.noServicesAddedYet', 13 id: 'workspaceDrawer.item.noServicesAddedYet',
11 defaultMessage: '!!!No services added yet', 14 defaultMessage: '!!!No services added yet',
12 }, 15 },
16 contextMenuEdit: {
17 id: 'workspaceDrawer.item.contextMenuEdit',
18 defaultMessage: '!!!edit',
19 },
13}); 20});
14 21
15const styles = theme => ({ 22const styles = theme => ({
@@ -61,6 +68,11 @@ class WorkspaceDrawerItem extends Component {
61 name: PropTypes.string.isRequired, 68 name: PropTypes.string.isRequired,
62 onClick: PropTypes.func.isRequired, 69 onClick: PropTypes.func.isRequired,
63 services: PropTypes.arrayOf(PropTypes.string).isRequired, 70 services: PropTypes.arrayOf(PropTypes.string).isRequired,
71 onContextMenuEditClick: PropTypes.func,
72 };
73
74 static defaultProps = {
75 onContextMenuEditClick: null,
64 }; 76 };
65 77
66 static contextTypes = { 78 static contextTypes = {
@@ -73,9 +85,23 @@ class WorkspaceDrawerItem extends Component {
73 isActive, 85 isActive,
74 name, 86 name,
75 onClick, 87 onClick,
88 onContextMenuEditClick,
76 services, 89 services,
77 } = this.props; 90 } = this.props;
78 const { intl } = this.context; 91 const { intl } = this.context;
92
93 const contextMenuTemplate = [{
94 label: name,
95 enabled: false,
96 }, {
97 type: 'separator',
98 }, {
99 label: intl.formatMessage(messages.contextMenuEdit),
100 click: onContextMenuEditClick,
101 }];
102
103 const contextMenu = Menu.buildFromTemplate(contextMenuTemplate);
104
79 return ( 105 return (
80 <div 106 <div
81 className={classnames([ 107 className={classnames([
@@ -83,6 +109,9 @@ class WorkspaceDrawerItem extends Component {
83 isActive ? classes.isActiveItem : null, 109 isActive ? classes.isActiveItem : null,
84 ])} 110 ])}
85 onClick={onClick} 111 onClick={onClick}
112 onContextMenu={() => (
113 onContextMenuEditClick && contextMenu.popup(remote.getCurrentWindow())
114 )}
86 > 115 >
87 <span 116 <span
88 className={classnames([ 117 className={classnames([