jaames / iro.js

🎨 Modular color picker widget for JavaScript, with support for a bunch of color formats
https://iro.js.org
Mozilla Public License 2.0
1.32k stars 82 forks source link

Event input:start fired twice for single click #209

Open RickMohr opened 3 years ago

RickMohr commented 3 years ago

If you single click on an iro.ui.Box (not on the handle) the input:start event is fired twice. Please see this pen:

https://codepen.io/RickMohr/pen/ExXXrOB

Open the console, and click on the box -- "input:start" is printed twice. ( It is correctly printed only once if you drag the box's handle or interact with the slider instead of the box.)

RickMohr commented 3 years ago

Also I believe input:change is sent before input:start, which seems incorrect.

jaames commented 3 years ago

Hey, thanks for the report! Unfortunately I don't have the time to look into this at the moment...

My best guess is that this is because I'm adding event listeners for both mouse events and the equivalent touch events, and they're both firing with user input. Might be time to move to pointer events (if browser support is consistent yet?) or perhaps just cancel one event if the other has just been fired. If someone could look into it and confirm this, it would be super appreciated :)

aditzu09 commented 2 years ago

Hi, looks like only input:start is emitted regardless of actual event(start, move, end). This explains the two input:start; one for click down and one for click up. Would be many more if it is movement in between.

I also didn't have time to go deeper but if (type === 0 /* Start */) is always true