From a01892948943075e4732d4a745e86d22e31486a5 Mon Sep 17 00:00:00 2001 From: nimish Date: Wed, 13 Mar 2019 18:10:47 +0530 Subject: [PATCH 1/2] Remove file menu on blur --- client/modules/IDE/components/FileNode.jsx | 1 + client/styles/components/_sidebar.scss | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/client/modules/IDE/components/FileNode.jsx b/client/modules/IDE/components/FileNode.jsx index d3b5be6b..7e5f1d70 100644 --- a/client/modules/IDE/components/FileNode.jsx +++ b/client/modules/IDE/components/FileNode.jsx @@ -154,6 +154,7 @@ export class FileNode extends React.Component { tabIndex="0" onClick={this.toggleFileOptions} onBlur={() => setTimeout(this.hideFileOptions, 200)} + style={{ display: (this.state.isOptionsOpen) ? 'inline-block' : '' }} > diff --git a/client/styles/components/_sidebar.scss b/client/styles/components/_sidebar.scss index dba607e0..bde98922 100644 --- a/client/styles/components/_sidebar.scss +++ b/client/styles/components/_sidebar.scss @@ -125,7 +125,6 @@ @include icon(); @include themify() { padding: #{4 / $base-font-size}rem 0; - background-color: map-get($theme-map, 'file-selected-color'); padding-right: #{6 / $base-font-size}rem; } display: none; @@ -137,6 +136,9 @@ display: none; } } + .sidebar__file-item:hover > .file-item__content & { + display: inline-block; + } & svg { width: #{10 / $base-font-size}rem; } From 1d2cb87c3362b7975d314f38c298de96954ef96a Mon Sep 17 00:00:00 2001 From: Cassie Tarakajian Date: Thu, 14 Mar 2019 16:10:50 -0400 Subject: [PATCH 2/2] for #874, also fixes bug in which file options could be revealed by right clicking even if user isn't owner of sketch --- client/modules/IDE/components/FileNode.jsx | 12 +++++++----- client/modules/IDE/components/Sidebar.jsx | 8 ++++++-- client/styles/components/_sidebar.scss | 6 ++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/client/modules/IDE/components/FileNode.jsx b/client/modules/IDE/components/FileNode.jsx index 7e5f1d70..252de291 100644 --- a/client/modules/IDE/components/FileNode.jsx +++ b/client/modules/IDE/components/FileNode.jsx @@ -65,6 +65,9 @@ export class FileNode extends React.Component { toggleFileOptions(e) { e.preventDefault(); + if (!this.props.canEdit) { + return; + } if (this.state.isOptionsOpen) { this.setState({ isOptionsOpen: false }); } else { @@ -88,7 +91,7 @@ export class FileNode extends React.Component { renderChild(childId) { return (
  • - +
  • ); } @@ -154,7 +157,6 @@ export class FileNode extends React.Component { tabIndex="0" onClick={this.toggleFileOptions} onBlur={() => setTimeout(this.hideFileOptions, 200)} - style={{ display: (this.state.isOptionsOpen) ? 'inline-block' : '' }} > @@ -251,7 +253,8 @@ FileNode.propTypes = { newFile: PropTypes.func.isRequired, newFolder: PropTypes.func.isRequired, showFolderChildren: PropTypes.func.isRequired, - hideFolderChildren: PropTypes.func.isRequired + hideFolderChildren: PropTypes.func.isRequired, + canEdit: PropTypes.bool.isRequired }; FileNode.defaultProps = { @@ -262,8 +265,7 @@ FileNode.defaultProps = { function mapStateToProps(state, ownProps) { // this is a hack, state is updated before ownProps - return state.files.find(file => file.id === ownProps.id) || { ...ownProps, name: 'test', fileType: 'file' }; - // return state.files.find(file => file.id === ownProps.id); + return state.files.find(file => file.id === ownProps.id) || { name: 'test', fileType: 'file' }; } function mapDispatchToProps(dispatch) { diff --git a/client/modules/IDE/components/Sidebar.jsx b/client/modules/IDE/components/Sidebar.jsx index 5172f27a..6419abe1 100644 --- a/client/modules/IDE/components/Sidebar.jsx +++ b/client/modules/IDE/components/Sidebar.jsx @@ -41,11 +41,12 @@ class Sidebar extends React.Component { } render() { + const canEditProject = this.userCanEditProject(); const sidebarClass = classNames({ 'sidebar': true, 'sidebar--contracted': !this.props.isExpanded, 'sidebar--project-options': this.props.projectOptionsVisible, - 'sidebar--cant-edit': !this.userCanEditProject() + 'sidebar--cant-edit': !canEditProject }); return ( @@ -82,7 +83,10 @@ class Sidebar extends React.Component { - file.name === 'root')[0].id} /> + file.name === 'root')[0].id} + canEdit={canEditProject} + /> ); } diff --git a/client/styles/components/_sidebar.scss b/client/styles/components/_sidebar.scss index bde98922..93f6967d 100644 --- a/client/styles/components/_sidebar.scss +++ b/client/styles/components/_sidebar.scss @@ -138,10 +138,16 @@ } .sidebar__file-item:hover > .file-item__content & { display: inline-block; + .sidebar--cant-edit & { + display: none; + } } & svg { width: #{10 / $base-font-size}rem; } + .sidebar__file-item--open > .file-item__content & { + display: inline-block; + } } .sidebar__file-item-options {