Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: Ionic Gesture - mismatched gesture details in the last onMove handler and the onEnd handler. #29892

Open
3 tasks done
shepard-liu opened this issue Sep 25, 2024 · 0 comments

Comments

@shepard-liu
Copy link

Prerequisites

Ionic Framework Version

v8.x

Current Behavior

Thank you for creating such a wonderful framework!

One can pass event handlers onMove and onEnd to the config object of createGesture(). These handlers are called with the details, such as deltaX and deltaY. The onMove handler fires regularly while the onEnd is called when the user interaction ends(typically on mouse up or touch end). In common cases, everything works pretty good. But the details passed to the two handlers mismatch if the user moves too fast, which causes the last part of changes to be unhandled because onEnd doesn't do what onMove does.

    const g = createGesture({
      direction: 'x',
      el: touchArea,
      onMove: ({ deltaX }) => {
        // manipulate styles of some elements, or set some states ...
        console.log("onMove:", deltaX)
      },
      onEnd: ({ deltaX }) => {
        // finalize and do some update ...
        console.log("onEnd:", deltaX)
      },
    });

Possible console output if user swipes fast enough:

onMove: 2
onMove: 6
onMove: 38
onMove: 110
onMove: 270
onMove: 532
onEnd: 1192

Sometimes this behavior confuses recruits like me. It would be better that the gesture package "flushes" a onMove before onEnd, although developers may simply call onMove inside onEnd themselves.

Expected Behavior

onMove gets called exactly before onEnd

Steps to Reproduce

See Reproduction on stackbliz.
Swipe the page fast horizontally.

Code Reproduction URL

https://stackblitz.com/edit/vitejs-vite-ged8wu?file=src%2FApp.jsx

Ionic Info

Ionic:

Ionic CLI : 7.2.0 (C:\Users...\AppData\Roaming\nvm\v20.11.0\node_modules@ionic\cli)
Ionic Framework : @ionic/react 8.2.7

Utility:

cordova-res : 0.15.4
native-run : 2.0.1

System:

NodeJS : v20.11.0 (C:\Program Files\nodejs\node.exe)
npm : 10.2.4
OS : Windows 10

Additional Information

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant