From a3cfdf04836bb5cef2c34626c07ce04349178792 Mon Sep 17 00:00:00 2001 From: David Lu Date: Thu, 12 May 2016 07:50:25 -0400 Subject: PLT-2786 Open Account Settings/Recent Mentions Shortcuts (#2957) * Account settings shortcut added * Added constants * Added recent mentions shortcut --- webapp/components/channel_header.jsx | 8 ++++++++ webapp/components/navbar_dropdown.jsx | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'webapp/components') diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx index ca3878d68..65d5a282a 100644 --- a/webapp/components/channel_header.jsx +++ b/webapp/components/channel_header.jsx @@ -47,6 +47,7 @@ export default class ChannelHeader extends React.Component { this.searchMentions = this.searchMentions.bind(this); this.showRenameChannelModal = this.showRenameChannelModal.bind(this); this.hideRenameChannelModal = this.hideRenameChannelModal.bind(this); + this.openRecentMentions = this.openRecentMentions.bind(this); const state = this.getStateFromStores(); state.showEditChannelPurposeModal = false; @@ -82,6 +83,7 @@ export default class ChannelHeader extends React.Component { PreferenceStore.addChangeListener(this.onListenerChange); UserStore.addChangeListener(this.onListenerChange); $('.sidebar--left .dropdown-menu').perfectScrollbar(); + document.addEventListener('keydown', this.openRecentMentions); } componentWillUnmount() { ChannelStore.removeChangeListener(this.onListenerChange); @@ -89,6 +91,7 @@ export default class ChannelHeader extends React.Component { SearchStore.removeSearchChangeListener(this.onListenerChange); PreferenceStore.removeChangeListener(this.onListenerChange); UserStore.removeChangeListener(this.onListenerChange); + document.removeEventListener('keydown', this.openRecentMentions); } onListenerChange() { const newState = this.getStateFromStores(); @@ -139,6 +142,11 @@ export default class ChannelHeader extends React.Component { is_mention_search: true }); } + openRecentMentions(e) { + if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.keyCode === Constants.KeyCodes.M) { + this.searchMentions(e); + } + } showRenameChannelModal(e) { e.preventDefault(); diff --git a/webapp/components/navbar_dropdown.jsx b/webapp/components/navbar_dropdown.jsx index 7f1cfce7c..32ac8f430 100644 --- a/webapp/components/navbar_dropdown.jsx +++ b/webapp/components/navbar_dropdown.jsx @@ -28,6 +28,7 @@ export default class NavbarDropdown extends React.Component { this.handleAboutModal = this.handleAboutModal.bind(this); this.aboutModalDismissed = this.aboutModalDismissed.bind(this); this.onTeamChange = this.onTeamChange.bind(this); + this.openAccountSettings = this.openAccountSettings.bind(this); this.state = { showUserSettingsModal: false, @@ -53,6 +54,7 @@ export default class NavbarDropdown extends React.Component { }); TeamStore.addChangeListener(this.onTeamChange); + document.addEventListener('keydown', this.openAccountSettings); } onTeamChange() { @@ -65,8 +67,13 @@ export default class NavbarDropdown extends React.Component { componentWillUnmount() { $(ReactDOM.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown'); TeamStore.removeChangeListener(this.onTeamChange); + document.removeEventListener('keydown', this.openAccountSettings); + } + openAccountSettings(e) { + if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.keyCode === Constants.KeyCodes.A) { + this.setState({showUserSettingsModal: true}); + } } - render() { var teamLink = ''; var inviteLink = ''; -- cgit v1.2.3-1-g7c22