Comments (7)
I think the most sensible solution for time being will be to re-enable onClick propagation and introduce an internal flag system so that craft can handle selection events properly, @prevwong i can try and draft a PR for that
from craft.js.
@dadwic @ymoussaba @hdaggett Fixed in 0.1.0.beta-8! 🥳
from craft.js.
So this is because the connect
/select
connector adds a onClick
event handler to the DOM element and it prevents propagation, so this means any other onClick
handler that you add will not be fired 😢
We would definitely like to improve this behaviour. But in the meantime, the temporary workaround is to use a side effect that reacts to the selected
event:
const Button = () => {
const { selected } = useNode(node => ({ selected: node.events.selected });
useEffect(() => {
if ( selected ) {
console.log("Button clicked!")
}
}, [selected]);
}
from craft.js.
Yeah, previously for the select
handler, we were using onMouseDownCapture
with debounce, which made it possible for you to add your own event handlers without issues.
But this had some caveats for us internally. For example, the event handler would be fired multiple times (so in the case of the select
handler, we will be calling setNodeEvent
multiple times, which was not ideal)
from craft.js.
const Button = () => { const { selected } = useNode(node => ({ selected: node.events.selected }); useEffect(() => { if ( selected ) { console.log("Button clicked!") } }, [selected]); }
This doesn't work for components that have multiple elements that may be clicked inside them :(
from craft.js.
Thanks,
In the previous version (v0.1.0-beta.6), this bug did not exist!
from craft.js.
I was dealing with this issue after an update too. I use a popover to edit the components. But since most react libraries (Antd in my case) are relying on onClick, nothing works.
Wouldn't there be a way to use another event than the onClick?
from craft.js.
Related Issues (20)
- How to delete a linked node? HOT 3
- How to make connections two components HOT 3
- Update a Node's prop without polluting editor state history HOT 1
- How to add a custom component to the bottom of the page by clicking on the left side HOT 2
- https://dynamics.sorce.interno/datagrid/forms_dynamic
- Multiple frames inside of an editor HOT 1
- User Component name doesn't change when specified in config HOT 1
- Nested elements are created as Linked Nodes instead of child nodes HOT 1
- How do I drag my saved serialized json into the editor? HOT 4
- The rollup packaging of the Craft.js project was successful, but when used, it reported an error "Buffer is not defined."
- Cancel drop HOT 2
- How do i get my html markup HOT 2
- Craft.js with React version 17 or 18 HOT 1
- Customizeable drag and drop
- Rollup cache is published to NPM
- Avoid animation of the element snapping back to its origin position when element is dropped. HOT 1
- Something like maxlength or max content restrictions
- Rendering a Navbar with dynamic menu items (e.g. Home, Blog) HOT 1
- Question: can I load html into the editor instead of manually build? HOT 1
- Drag and drop does not work in the tutorial HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from craft.js.