Closed keithamus closed 1 year ago
Name | Link |
---|---|
Latest commit | 5a4486feeea0e3b195ab8c09a1c82eb60bbd1065 |
Latest deploy log | https://app.netlify.com/sites/popover-polyfill/deploys/64658cbff9ad58000810a7fa |
Deploy Preview | https://deploy-preview-99--popover-polyfill.netlify.app |
Preview on mobile | Toggle QR Code...Use your smartphone camera to open QR code link. |
To edit notification comments on pull requests, go to your Netlify site settings.
@jgerigmeyer could we get this one out as a 0.2.1
release please?
Prior to this change, a popover removed from the document would still be in the autoPopovers set, and subsequently
topMostPopverAncestor
would return disconnected elements, causingcloseAllPopovers
to hit an infinite loop:hidePopover
is calledcloseAllPopovers
is calledtopMostPopoverAncestor
is called and returns disconnected element.hidePopover(topMost)
is called but returns false, as the element is disconnected.topMostPopoverAncestor
is called, but it returns the same element. Repeat step 4, infinite loop.This commit alters
topMostAutoPopover
to check if the element is disconnected, and remove it from the set if so, only returning the first connected element.hidePopover
is calledcloseAllPopovers
is calledtopMostPopoverAncestor
is called, the first element is disconnected, so it skips and returns the first connected element.hidePopover(topMost)
is called and returns true.Steps to test/reproduce
Please explain how to best reproduce the issue and/or test the changes locally (including the pages/URLs/views/states to review). I've added a new test file "edge-cases.spec". This includes a test which fails on the current build (times out due to the browser hanging), but passes with the changes.
Show me
Provide screenshots/animated gifs/videos if necessary.
Special thanks to @hmaurer for giving me an easy repro to this one!