import React from 'react'; import PropTypes from 'prop-types'; import { Button, Modal, ModalHeader, Input, ModalBody, ModalFooter, Form, FormGroup, Label, Alert } from 'reactstrap'; import { gettext } from '../../utils/constants'; import { Utils } from '../../utils/utils'; const propTypes = { fileType: PropTypes.string, parentPath: PropTypes.string.isRequired, onAddFolder: PropTypes.func.isRequired, checkDuplicatedName: PropTypes.func.isRequired, addFolderCancel: PropTypes.func.isRequired, }; class CreateForder extends React.Component { constructor(props) { super(props); this.state = { parentPath: '', childName: '', errMessage: '', isSubmitBtnActive: false, }; this.newInput = React.createRef(); } componentDidMount() { let parentPath = this.props.parentPath; if (parentPath[parentPath.length - 1] === '/') { // mainPanel this.setState({parentPath: parentPath}); } else { this.setState({parentPath: parentPath + '/'}); // sidePanel } this.newInput.focus(); this.newInput.setSelectionRange(0,0); } handleChange = (e) => { if (!e.target.value.trim()) { this.setState({isSubmitBtnActive: false}); } else { this.setState({isSubmitBtnActive: true}); } this.setState({childName: e.target.value}); } handleSubmit = () => { let newName = this.state.childName; let isDuplicated = this.checkDuplicatedName(); if (isDuplicated) { let errMessage = gettext('The name "{name}" is already taken. Please choose a different name.'); errMessage = errMessage.replace('{name}', Utils.HTMLescape(newName)); this.setState({errMessage: errMessage}); } else { let path = this.state.parentPath + newName; this.props.onAddFolder(path); } } handleKeyPress = (e) => { if (e.key === 'Enter') { this.handleSubmit(); e.preventDefault(); } } toggle = () => { this.props.addFolderCancel(); } checkDuplicatedName = () => { let isDuplicated = this.props.checkDuplicatedName(this.state.childName); return isDuplicated; } render() { return ( {gettext('New Folder')}
{this.newInput = input;}} onKeyPress={this.handleKeyPress} onChange={this.handleChange} />
{this.state.errMessage && {this.state.errMessage}}
); } } CreateForder.propTypes = propTypes; export default CreateForder;