-
Notifications
You must be signed in to change notification settings - Fork 491
Restore drag and drop between two trees #420
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
When dragging from another tree, this.dragNode is null and convertNodePropsToEventData(this.dragNode) will fail.
This pull request is being automatically deployed with Vercel (learn more). 🔍 Inspect: https://vercel.com/react-component/tree/3FQKrkja9nLcroD7hxfDxpgeHEZn |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #420 +/- ##
==========================================
- Coverage 99.67% 98.78% -0.90%
==========================================
Files 11 11
Lines 1226 1231 +5
Branches 355 359 +4
==========================================
- Hits 1222 1216 -6
- Misses 4 15 +11 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Co-authored-by: 07akioni <07akioni2@gmail.com>
This pull request introduces 2 alerts when merging 1aa00e4 into 39a01f0 - view on LGTM.com new alerts:
|
This pull request introduces 2 alerts when merging d9d399b into 39a01f0 - view on LGTM.com new alerts:
|
Appreciate for your works. On the first drag the drop indicator isn't shown on the right tree. Screen.Recording.2021-02-13.at.1.45.19.AM.mov |
@07akioni could you take a look again please? |
I tested it on the fork repo and it works very well :) @thomasstjerne can you rebase this branch? There are several conflicts to be resolved with the current master branch. Bug (corner case) reported here: #420 (comment) ( |
I think Issue 2 in comment 420 is fixed |
I think currently the main problem is that if it's neccessary to expose |
I was not able to keep the coverage % up, sorry. |
if (props.dragging === true) { | ||
newState.dragging = props.dragging; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it's possible to use a global variable to save the dragging state rather than let user passing it in?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let someTreeDragging = false
{
onDragOver () {
if (someTreeDragging && !this.state.dragging) { this.setState(dragging) }
},
onDragStart() {
someTreeDragging = true
this.setState({ dragging: true })
}
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be fine as well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Du you want a fixed "magic" variable name, or should we pass the variable name in props as a string?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
le to use a global variable to save the dragging state r
Is there a need for magic name? I think we can hold it in a varaible in the package.
Too low test coverage is the only reason why it is still not merged? 😞 |
I am afraid the code on master changed too much since March 8th 2021 when this pull request was active. I am not able to find time for another round of rewriting, sorry. |
可以这样解决 const treeInstance = React.useRef<Tree>();
React.useLayoutEffect(() => {
if (treeInstance.current) {
const onNodeDragEnter = treeInstance.current.onNodeDragEnter;
const onNodeDragOver = treeInstance.current.onNodeDragOver;
if (typeof onNodeDragEnter === "function") {
treeInstance.current.onNodeDragEnter = function (...argv: any[]) {
if (treeInstance.current.dragNode) {
return onNodeDragEnter.call(this, ...argv);
}
}
}
if (typeof onNodeDragOver === "function") {
treeInstance.current.onNodeDragOver = function (...argv: any[]) {
if (treeInstance.current.dragNode) {
return onNodeDragOver.call(this, ...argv);
}
}
}
}
}, []);
return <Tree ref={treeInstance} />; |
See #419
Worked untill v3.11: https://codesandbox.io/s/drag-tree-to-tree-forked-fx4qf