import React from 'react'; import PropTypes from 'prop-types'; import { gettext } from '../../utils/constants'; import { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter } from 'reactstrap'; const propTypes = { currentNode: PropTypes.object, onRename: PropTypes.func.isRequired, toggleCancel: PropTypes.func.isRequired, }; class Rename extends React.Component { constructor(props) { super(props); this.state = { newName: '', }; this.newInput = React.createRef(); } handleChange = (e) => { this.setState({ newName: e.target.value, }); } handleSubmit = () => { this.props.onRename(this.state.newName); } handleKeyPress = (e) => { if (e.key === 'Enter') { this.handleSubmit(); } } toggle = () => { this.props.toggleCancel(); } componentWillMount() { this.setState({ newName: this.props.currentNode.object.name }); } componentDidMount() { let currentNode = this.props.currentNode; this.changeState(currentNode); this.newInput.focus(); let type = currentNode.object.type; if (type === 'file') { var endIndex = currentNode.object.name.lastIndexOf('.md'); this.newInput.setSelectionRange(0, endIndex, 'forward'); } else { this.newInput.setSelectionRange(0, -1); } } componentWillReceiveProps(nextProps) { this.changeState(nextProps.currentNode); } changeState(currentNode) { let name = currentNode.object.name; this.setState({newName: name}); } render() { let type = this.props.currentNode.object.type; return ( {type === 'file' ? gettext('Rename File') : gettext('Rename Folder') }

{type === 'file' ? gettext('Enter the new file name:'): gettext('Enter the new folder name:')}

{this.newInput = input;}} placeholder="newName" value={this.state.newName} onChange={this.handleChange} />
); } } Rename.propTypes = propTypes; export default Rename;