Fixed
- Dismissed toasts could stay in the DOM forever when the consumer app does not load the optional
toast.css(or overrides.toastwithout a transition):transitionendnever fires, so the removal never ran.dismiss()now reads the effective transition duration viagetComputedStyleand removes the element immediately when it is zero, otherwise keeps thetransitionendlistener with asetTimeoutfallback slightly above the duration. This also coversprefers-reduced-motionand interrupted transitions. transitionendbubbling from descendants (custom<template>toasts containing e.g. a progress bar or a button with its own transition) could tear the toast down early. The handler now reacts only to the toast's own transition (event.target === element).- Asymmetric teardown: the
transitionendlistener is now removed indisconnect()too, not just the fallback timer.
Changed
- Controller test suite converted to fake timers — deterministic and ~7× faster — with a new regression test for the descendant-bubbling guard.
Full changelog: v0.2.0...v0.2.1