-
-
Notifications
You must be signed in to change notification settings - Fork 653
Description
I'm using the following custom FloatingUI options in the "defaultStepOptions":
const shepherdTour = new Shepherd.Tour({
steps: tourOptions.steps,
keyboardNavigation: true,
defaultStepOptions: {
scrollTo: { behavior: 'smooth', block: 'center' },
floatingUIOptions: {
middleware: [shift({ padding: 32 }), offset(16)]
}
}
});
When the position of the tooltip is calculated, the middleware of the arrow and the shift options is applied in the following order:
[flip, shift, arrow, shift, offset] // The first 3 are from internal Shepherd.js settingsThis causes an issue with how the arrow is placed, since the arrow middleware should be last in the order.
I've attempted to fix this using the beforeShowPromise and the whenShow functions, but run into issues with applying the arrow middleware in those places. In the beforeShowPromise the step element hasn't been generated yet, meaning the arrow can't be targeted and in the whenShow function the computePosition function for FloatingUI has already been run.
How can I apply shift with padding while still achieving correct arrow placement?