Fix detecting transitions

This commit is contained in:
varjolintu 2026-01-31 12:46:50 +02:00
parent b46c1a1199
commit 0ba8db1d0f

View file

@ -245,6 +245,30 @@ kpxcObserverHelper.findInputsFromShadowDOM = function(target) {
return inputFields;
};
// Detects animations and transitions. Triggers handleObserverAdd() again on animationend/transitionend.
kpxcObserverHelper.handleTransitions = function(target) {
const targetHasAnimations = target?.classList?.toString()?.includes('animate');
const targetHasDurations = target?.classList?.toString()?.includes('duration');
if (targetHasAnimations || targetHasDurations) {
const animations = target.getAnimations();
const transitionTime = animations[0]?.currentTime ?? 0;
// Animation found, but transition has not finished
if (animations && transitionTime === 0) {
target.addEventListener(
targetHasAnimations ? 'animationend' : 'transitionend',
() => {
kpxcObserverHelper.handleObserverAdd(target);
},
{
once: true,
},
);
}
}
};
// Adds elements to a monitor array. Identifies the input fields.
kpxcObserverHelper.handleObserverAdd = async function(target) {
if (kpxcObserverHelper.ignoredElement(target)) {
@ -257,6 +281,8 @@ kpxcObserverHelper.handleObserverAdd = async function(target) {
return;
}
kpxcObserverHelper.handleTransitions(target);
const inputs = kpxcObserverHelper.getInputs(target);
if (inputs.length === 0) {
return;