downshift icon indicating copy to clipboard operation
downshift copied to clipboard

ItemClick doesn't work with stateReducer inside an iframe

Open DeyLak opened this issue 4 years ago • 9 comments

  • downshift version: 6.1.0
  • node version: codesandbox
  • npm (or yarn) version: codesandbox

What you did: I tried to combine the default example of multiple select and that state reducer part to achieve my dropdown not being closed after item click. I also wrap it in an iframe(using react-frame-component), cause I have such setup for my components in the documentation environment.

What happened:

ezgif-4-44bd487af032

ItemClick change type doesn't trigger stateReducer, which causes menu to close, although InputKeyDownEnter does.

Reproduction repository:

https://codesandbox.io/s/gallant-meadow-660h4?file=/src/index.js

Problem description: stateReducer doesn't fire with useCombobox.stateChangeTypes.ItemClick inside an iframe

Suggested solution: I could implement the fix with some advise help. Do you have any idea, what causes this?

DeyLak avatar Feb 13 '21 21:02 DeyLak

Indeed it's broken. It triggers a blur instead of item click. It should be investigated. Maybe something in our logic that triggers input blur is broken. Maybe in useMouseAndTouchTracker does not work as expected when a different window is used. Is this something you can look into?

silviuaavram avatar Feb 14 '21 10:02 silviuaavram

@silviuaavram Line 127 passed in [comboboxRef, menuRef, toggleButtonRef]. Was there a reason why itemRefs did not need to be passed? the same thing is happening for useSelect

jenn-jenn avatar Feb 16 '21 04:02 jenn-jenn

Well, it was not needed. The function was copy pasted from Downshift, added to a hook to be re-used, and it was not needing any items for its purpose. @jenn-jenn But if the fix requires the items to be passed I have no problem with that.

silviuaavram avatar Feb 23 '21 14:02 silviuaavram

@DeyLak @jenn-jenn Can you check if 6.1.2-alpha.0 fixes this? It may be related to https://github.com/downshift-js/downshift/issues/1255 but I'm not sure.

silviuaavram avatar Apr 03 '21 10:04 silviuaavram

Any update on this. The issue is still reproduceable.

But only when used iframe in iOS browsers.

@DeyLak did you manage to get this fixed, facing the similar issue. @silviuaavram updated to 6.1.3 but still has the same issue.

Any help will be appreciated.

rrabii avatar May 31 '21 07:05 rrabii

@rrabii can you go ahead and try to fix it? I am unable to work on this at the moment, but if you submit a PR and looks good I will merge it. Thanks!

silviuaavram avatar May 31 '21 08:05 silviuaavram

@silviuaavram alright, will take a look.

rrabii avatar May 31 '21 08:05 rrabii

Any progress with this issue?

amabunny avatar Aug 03 '21 14:08 amabunny

image

At least that insane hack helped. It's strange, but callbacks created in React doesn't fires click event. Didn't found any issues in source code. It's weird...

amabunny avatar Aug 03 '21 15:08 amabunny