mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-10 03:11:07 +00:00
Move file by drag and drop (#3168)
This commit is contained in:
@@ -19,6 +19,8 @@ const propTypes = {
|
||||
onMenuItemClick: PropTypes.func,
|
||||
registerHandlers: PropTypes.func,
|
||||
unregisterHandlers: PropTypes.func,
|
||||
onNodeDragMove: PropTypes.func,
|
||||
onNodeDrop: PropTypes.func,
|
||||
};
|
||||
|
||||
class TreeNodeView extends React.Component {
|
||||
@@ -27,7 +29,8 @@ class TreeNodeView extends React.Component {
|
||||
super(props);
|
||||
this.state = {
|
||||
isHighlight: false,
|
||||
isShowOperationMenu: false
|
||||
isShowOperationMenu: false,
|
||||
isNodeDropShow: false,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -68,6 +71,27 @@ class TreeNodeView extends React.Component {
|
||||
this.props.onNodeDragStart(e, this.props.node);
|
||||
}
|
||||
|
||||
onNodeDragEnter = (e) => {
|
||||
if (this.props.node.object.type === 'dir') {
|
||||
this.setState({isNodeDropShow: true});
|
||||
}
|
||||
this.props.onNodeDragEnter(e, this.props.node);
|
||||
}
|
||||
|
||||
onNodeDragMove = (e) => {
|
||||
this.props.onNodeDragMove(e);
|
||||
}
|
||||
|
||||
onNodeDragLeave = (e) => {
|
||||
this.setState({isNodeDropShow: false});
|
||||
this.props.onNodeDragLeave(e, this.props.node);
|
||||
}
|
||||
|
||||
onNodeDrop = (e) => {
|
||||
this.setState({isNodeDropShow: false});
|
||||
this.props.onNodeDrop(e, this.props.node);
|
||||
}
|
||||
|
||||
onUnFreezedItem = () => {
|
||||
this.setState({isShowOperationMenu: false});
|
||||
this.props.onUnFreezedItem();
|
||||
@@ -134,6 +158,11 @@ class TreeNodeView extends React.Component {
|
||||
onNodeChanged={this.props.onNodeChanged}
|
||||
registerHandlers={this.props.registerHandlers}
|
||||
unregisterHandlers={this.props.unregisterHandlers}
|
||||
onNodeDragStart={this.props.onNodeDragStart}
|
||||
onNodeDragMove={this.props.onNodeDragMove}
|
||||
onNodeDrop={this.props.onNodeDrop}
|
||||
onNodeDragEnter={this.props.onNodeDragEnter}
|
||||
onNodeDragLeave={this.props.onNodeDragLeave}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
@@ -152,8 +181,8 @@ class TreeNodeView extends React.Component {
|
||||
<div className="tree-node">
|
||||
<div type={type} title={node.object.name}
|
||||
onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave}
|
||||
className={`tree-node-inner text-nowrap ${hlClass} ${node.path === '/'? 'hide': ''}`}>
|
||||
<div className="tree-node-text" draggable="true" onDragStart={this.onNodeDragStart} onClick={this.onNodeClick}>{node.object.name}</div>
|
||||
className={`tree-node-inner text-nowrap ${hlClass} ${node.path === '/'? 'hide': ''} ${this.state.isNodeDropShow ? 'tree-node-drop' : ''}`}>
|
||||
<div className="tree-node-text" draggable="true" onDragStart={this.onNodeDragStart} onClick={this.onNodeClick} onDragEnter={this.onNodeDragEnter} onDragLeave={this.onNodeDragLeave} onDragOver={this.onNodeDragMove} onDrop={this.onNodeDrop}>{node.object.name}</div>
|
||||
<div className="left-icon">
|
||||
{type === 'dir' && (!node.isLoaded || (node.isLoaded && node.hasChildren())) && (
|
||||
<i
|
||||
|
Reference in New Issue
Block a user