
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
react-dnd-preview
Advanced tools
This project is a React component compatible with React DnD that can be used to emulate a Drag'n'Drop "ghost" when a Backend system doesn't have one (e.g. react-dnd-touch-backend
).
See the migration section for instructions when switching from 4.x.x
or 6.x.x
.
npm install -S react-dnd-preview
Just include the Preview
component close to the top component of your application (it places itself absolutely).
It is usable in different ways: hook-based, function-based and context-based. All of them receive the same data formatted the same way, an object containing the following properties:
display
: only with usePreview
, boolean indicating if you should render your previewitemType
: the type of the item (monitor.getItemType()
)item
: the item (monitor.getItem()
)style
: an object representing the style (used for positioning), it should be passed to the style
property of your preview componentref
: a reference which can be passed to the final component that will use style
, it will allow Preview
to position the previewed component correctly (closer to what HTML5 DnD can do)monitor
: the actual DragLayerMonitor
from react-dnd
The function needs to return something that React can render (React component, null
, etc).
See also the examples for more information.
import { usePreview } from 'react-dnd-preview'
const MyPreview = () => {
const preview = usePreview({ placement: 'top', padding: {x: -20, y: 0 }})
if (!preview.display) {
return null
}
const {itemType, item, style, ref} = preview;
return <div className="item-list__item" ref={ref} style={style}>{itemType}</div>
}
const App = () => {
return (
<DndProvider backend={MyBackend}>
<ItemList />
<MyPreview />
</DndProvider>
)
}
import { Preview } from 'react-dnd-preview'
const generatePreview = ({itemType, item, style}) => {
return <div className="item-list__item" style={style}>{itemType}</div>
}
class App extends React.Component {
render() {
return (
<DndProvider backend={MyBackend}>
<ItemList />
<Preview generator={generatePreview} />
// or
<Preview>{generatePreview}</Preview>
</DndProvider>
)
}
}
import { Preview, Context } from 'react-dnd-preview'
const MyPreview = () => {
const {itemType, item, style} = useContext(Preview.Component)
return <div className="item-list__item" style={style}>{itemType}</div>
}
const App = () => {
return (
<DndProvider backend={MyBackend}>
<ItemList />
<Preview>
<MyPreview />
// or
<Context.Consumer>
{({itemType, item, style}) => <div className="item-list__item" style={style}>{itemType}</div>}
</Context.Consumer>
</Preview>
</DndProvider>
)
}
Starting with 7.0.0
, react-dnd-preview
doesn't have a default export anymore.
Previously:
import Preview from 'react-dnd-preview'
Now:
import { Preview } from 'react-dnd-preview'
Starting with 5.0.0
, react-dnd-preview
will start passing its arguments packed in one argument, an object {itemType, item, style}
, instead of 3 different arguments (itemType
, item
and style
). This means that will need to change your generator function to receive arguments correctly.
MIT, Copyright (c) 2016-2022 Louis Brunner
FAQs
Preview component for React DnD
We found that react-dnd-preview demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.