diff options
author | Dominik Guzei <dominik.guzei@gmail.com> | 2019-04-10 16:37:04 +0200 |
---|---|---|
committer | Dominik Guzei <dominik.guzei@gmail.com> | 2019-04-10 16:37:04 +0200 |
commit | 664b59789ca032eaa393af52ff2559e173a9b0b5 (patch) | |
tree | 927a0ff9edf39dd999b7478a70f72ee82ca9fbde /src/features/workspaces/components | |
parent | add premium badge to workspace drawer headline (diff) | |
download | ferdium-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/components')
-rw-r--r-- | src/features/workspaces/components/WorkspaceDrawer.js | 1 | ||||
-rw-r--r-- | src/features/workspaces/components/WorkspaceDrawerItem.js | 29 |
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 @@ | |||
1 | import { remote } from 'electron'; | ||
1 | import React, { Component } from 'react'; | 2 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 3 | import PropTypes from 'prop-types'; |
3 | import { observer } from 'mobx-react'; | 4 | import { observer } from 'mobx-react'; |
@@ -5,11 +6,17 @@ import injectSheet from 'react-jss'; | |||
5 | import classnames from 'classnames'; | 6 | import classnames from 'classnames'; |
6 | import { defineMessages, intlShape } from 'react-intl'; | 7 | import { defineMessages, intlShape } from 'react-intl'; |
7 | 8 | ||
9 | const { Menu } = remote; | ||
10 | |||
8 | const messages = defineMessages({ | 11 | const 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 | ||
15 | const styles = theme => ({ | 22 | const 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([ |