chore: Split presentational and logical parts of internal drag handle component #3651
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Big refactor. We previously had a "drag handle button" (which was a basic button with props for pointer/keypress handlers), and a "drag handle wrapper" (which tracked focus states, showed and hid buttons, etc). This turns all the components into simple presentational ones and moves all the wrapper logic into a hook. This refactor will open the door in the future to allow for multiple technical approaches with a simple component.
But in the future, we can support multiple different approaches to dragging, so this is a stepping stone to logic in the future that would look like:
The "wrapper" as a concept still exists to pass props down to the tooltip or the direction buttons, so it's now basically a compositional convenience:
See the internal document ztdXAfqVYW3T for more information on dragging interactions.
TODO: Write more.
Related links, issue #, if available: n/a
How has this been tested?
The tests are already there, and since this is a refactor, nothing should break.
Review checklist
The following items are to be evaluated by the author(s) and the reviewer(s).
Correctness
CONTRIBUTING.md
.CONTRIBUTING.md
.Security
checkSafeUrl
function.Testing
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.