diff --git a/client/modules/IDE/components/FileNode.jsx b/client/modules/IDE/components/FileNode.jsx index b71d8fe8..abae4fe2 100644 --- a/client/modules/IDE/components/FileNode.jsx +++ b/client/modules/IDE/components/FileNode.jsx @@ -18,6 +18,7 @@ export class FileNode extends React.Component { this.handleFileNameChange = this.handleFileNameChange.bind(this); this.validateFileName = this.validateFileName.bind(this); this.handleFileClick = this.handleFileClick.bind(this); + this.toggleFileOptions = this.toggleFileOptions.bind(this); } handleFileClick(e) { @@ -48,7 +49,8 @@ export class FileNode extends React.Component { } } - toggleFileOptions() { + toggleFileOptions(e) { + e.preventDefault(); if (this.props.isOptionsOpen) { this.props.hideFileOptions(this.props.id); } else { @@ -83,7 +85,7 @@ export class FileNode extends React.Component { {(() => { // eslint-disable-line if (this.props.name !== 'root') { return ( -
+
{(() => { // eslint-disable-line if (this.props.fileType === 'file') { @@ -128,9 +130,7 @@ export class FileNode extends React.Component { aria-label="view file options" ref={`fileOptions-${this.props.id}`} tabIndex="0" - onClick={() => { - this.toggleFileOptions(); - }} + onClick={this.toggleFileOptions} > diff --git a/client/modules/IDE/components/Sidebar.jsx b/client/modules/IDE/components/Sidebar.jsx index 82d5fb72..7c1a3ff1 100644 --- a/client/modules/IDE/components/Sidebar.jsx +++ b/client/modules/IDE/components/Sidebar.jsx @@ -10,13 +10,15 @@ class Sidebar extends React.Component { constructor(props) { super(props); this.resetSelectedFile = this.resetSelectedFile.bind(this); + this.toggleProjectOptions = this.toggleProjectOptions.bind(this); } resetSelectedFile() { this.props.setSelectedFile(this.props.files[1].id); } - toggleProjectOptions() { + toggleProjectOptions(e) { + e.preventDefault(); if (this.props.projectOptionsVisible) { this.props.closeProjectOptions(); } else { @@ -34,7 +36,7 @@ class Sidebar extends React.Component { return ( ); diff --git a/client/modules/IDE/components/SidebarItem.jsx b/client/modules/IDE/components/SidebarItem.jsx deleted file mode 100644 index c029e354..00000000 --- a/client/modules/IDE/components/SidebarItem.jsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { PropTypes } from 'react'; -import InlineSVG from 'react-inlinesvg'; -import classNames from 'classnames'; -const downArrowUrl = require('../../../images/down-arrow.svg'); - -class SidebarItem extends React.Component { - constructor(props) { - super(props); - this.handleKeyPress = this.handleKeyPress.bind(this); - this.handleFileNameChange = this.handleFileNameChange.bind(this); - this.validateFileName = this.validateFileName.bind(this); - } - - handleFileNameChange(event) { - this.props.updateFileName(this.props.file.id, event.target.value); - } - - handleKeyPress(event) { - if (event.key === 'Enter') { - this.props.hideEditFileName(this.props.file.id); - } - } - - validateFileName() { - const oldFileExtension = this.originalFileName.match(/\.[0-9a-z]+$/i); - const newFileExtension = this.props.file.name.match(/\.[0-9a-z]+$/i); - if (oldFileExtension && !newFileExtension) { - this.props.updateFileName(this.props.file.id, this.originalFileName); - } - if (oldFileExtension && newFileExtension && oldFileExtension[0] !== newFileExtension[0]) { - this.props.updateFileName(this.props.file.id, this.originalFileName); - } - } - - render() { - let itemClass = classNames({ - 'sidebar__file-item': true, - 'sidebar__file-item--selected': this.props.file.isSelectedFile, - 'sidebar__file-item--open': this.props.file.isOptionsOpen, - 'sidebar__file-item--editing': this.props.file.isEditingName - }); - - return ( -
  • setTimeout(() => this.props.hideFileOptions(this.props.file.id), 100)} - tabIndex={this.props.fileIndex} - onClick={() => this.props.setSelectedFile(this.props.file.id)} - > - {this.props.file.name} - { - this.validateFileName(); - this.props.hideEditFileName(this.props.file.id); - }} - onKeyPress={this.handleKeyPress} - /> - -
    - -
    -
  • - ); - } -} - -SidebarItem.propTypes = { - file: PropTypes.shape({ - id: PropTypes.string.isRequired, - name: PropTypes.string.isRequired, - isSelectedFile: PropTypes.bool, - isOptionsOpen: PropTypes.bool, - isEditingName: PropTypes.bool - }).isRequired, - setSelectedFile: PropTypes.func.isRequired, - fileIndex: PropTypes.number.isRequired, - showFileOptions: PropTypes.func.isRequired, - hideFileOptions: PropTypes.func.isRequired, - deleteFile: PropTypes.func.isRequired, - resetSelectedFile: PropTypes.func.isRequired, - showEditFileName: PropTypes.func.isRequired, - hideEditFileName: PropTypes.func.isRequired, - updateFileName: PropTypes.func.isRequired -}; - -export default SidebarItem;