diff --git a/src/qweb/extensions.ts b/src/qweb/extensions.ts index 33c618c8..7de1acee 100644 --- a/src/qweb/extensions.ts +++ b/src/qweb/extensions.ts @@ -2,6 +2,7 @@ import { STATUS } from "../component/component"; import { VNode } from "../vdom/index"; import { INTERP_REGEXP } from "./compilation_context"; import { QWeb } from "./qweb"; +import { browser } from "../browser"; /** * Owl QWeb Extensions @@ -198,7 +199,14 @@ function whenTransitionEnd(elm: HTMLElement, cb) { const durations: Array = (styles.transitionDuration || "").split(", "); const timeout: number = getTimeout(delays, durations); if (timeout > 0) { - elm.addEventListener("transitionend", cb, { once: true }); + const transitionEndCB = () => { + if (!elm.parentNode) return; + cb(); + browser.clearTimeout(fallbackTimeout); + elm.removeEventListener("transitionend", transitionEndCB); + }; + elm.addEventListener("transitionend", transitionEndCB, { once: true }); + const fallbackTimeout = browser.setTimeout(transitionEndCB, timeout + 1); } else { cb(); }