react-draggable
Advanced tools
Changelog
4.4.6 (Sep 27, 2023)
Changelog
4.4.5 (Apr 26, 2022)
grid
prop unused in handleDragStop
#621children
prop missing in TypeScript definition #648Changelog
4.4.4 (Aug 27, 2021)
documentElement.style
actually exists. Fixes crashes in some obscure environments. #574 #575peerDependencies
again to fix Yarn PnPclassnames
with clsx
to save a few bytesref
functionality and additional README content on nodeRef
Changelog
4.4.2 (May 14, 2020)
Changelog
4.4.1 (May 12, 2020)
Changelog
4.4.0 (May 12, 2020)
nodeRef
:
<Draggable>
to work properly, we need raw access
to the underlying DOM node. If you want to avoid the warning, pass a nodeRef
as in this example:
function MyComponent() {
const nodeRef = React.useRef(null);
return (
<Draggable nodeRef={nodeRef}>
<div ref={nodeRef}>Example Target</div>
</Draggable>
);
}
This can be used for arbitrarily nested components, so long as the ref ends up
pointing to the actual child DOM node and not a custom component.
Thanks to react-transition-group for the inspiration.
nodeRef
is also available on <DraggableCore>
.There is nothing special in the browser build that is actually practical for modern use. The "browser" field, as defined in https://github.com/defunctzombie/package-browser-field-spec#overview, indicates that you should use it if you are directly accessing globals, using browser-specific features, dom manipulation, etc.
React components like react-draggable are built to do minimal raw DOM manipulation, and to always gate this behind conditionals to ensure that server-side rendering still works. We don't make any changes to any of that for the "browser" build, so it's entirely redundant.
This should also fix the "Super expression must either be null or a function" error (#472) that some users have experienced with particular bundler configurations.
The browser build may still be imported at "build/web/react-draggable.min.js". This is to prevent breakage only. The file is no longer minified to prevent possible terser bugs.
The browser build will likely be removed entirely in 5.0.
bounds
optional in TypeScript #473Changelog
4.3.1 (Apr 11, 2020)
This is a bugfix release.
<DraggableCore>
not to pass styles.
React.cloneElement
has an odd quirk. When you do:
return React.cloneElement(this.props.children, {style: this.props.children.props.style});
, style
ends up undefined.babel-loader
cache does not invalidate when it should. I had modified webpack.config.js in the last version but it reused stale cache.Changelog
4.3.0 (Apr 10, 2020)
<Draggable>
.
<Draggable>
were not scrollable on touch devices due to the outer container having touch-action: none
.
e.preventDefault()
. However, due to changes in Chrome >= 56, this is only possible on
non-passive event handlers. To fix this, we now add/remove the touchEvent on lifecycle events rather than using React's event system.