intro.js-react
intro.js-react copied to clipboard
onPreventChange() callback not firing
Describe the bug
onPreventChange() callback not firing when onBeforeChange() returns a Promise that outputs false. Also seeing what I suspect is the incorrect value passed to onPreventChange()
To Reproduce
// first issue example
<Steps
// some large amount of steps:
steps={[{..}, {..}, {..}]}
// async attempt to skip step 1
onBeforeChange={async (step) => {
if (step == 1) return 2
})
// try to detect the skip:
onPreventChange={(step) => {
// this never logs
console.log({ skipped: step })
}}
/>
// second issue example
<Steps
// some large amount of steps:
steps={[{..}, {..}, {..}]}
// attempt to skip step 1
onBeforeChange={(step) => {
if (step == 1) return 2
})
// try to detect the skip:
onPreventChange={(step) => {
// logs 0, instead of 1
console.log({ skipped: step })
}}
/>
Expected behavior
I'd expect that if the returned Promise from onBeforeChange() itself outputs a false, then we still get to fire onPreventChange()
How often does this bug happen?
Every time
System Info
macOS 14.5 (23F79) Chromium browsers
Additional Context
No response
Thanks for the feedback.
Indeed, the intro.js-react props onBeforeChange is not a 1:1 match with the intro.js onbeforechange callback function. The current implementation does not seem to support a promise-based approach.
I would be open to reviewing a PR that adds support for a promise-based approach.