JS: add visual effect when delete a blockSubWidget (#76172) #376
|
@ -710,6 +710,7 @@ $(function() {
|
|||
const $add_button = $(this).parents('.BlockWidget').find('.list-add');
|
||||
/* rename attributes in following blocks */
|
||||
const $subwidget = $(this).parents('.BlockSubWidget').first();
|
||||
const subwidget = $subwidget[0];
|
||||
const name_parts = $subwidget.data('widget-name').match(/(.*)(\d+)$/);
|
||||
const prefix = name_parts[1];
|
||||
const idx = parseInt(name_parts[2]);
|
||||
|
@ -720,17 +721,27 @@ $(function() {
|
|||
}
|
||||
});
|
||||
}
|
||||
$subwidget.nextAll('.BlockSubWidget').each(function(i, elem) {
|
||||
const prefix1 = prefix + (idx + i + 1);
|
||||
const prefix2 = prefix + (idx + i);
|
||||
replace_prefix(elem, prefix1, prefix2);
|
||||
$(elem).find('*').each(function(i, elem_child) { replace_prefix(elem_child, prefix1, prefix2); });
|
||||
});
|
||||
/* then remove row */
|
||||
$subwidget.remove();
|
||||
disable_single_block_remove_button();
|
||||
/* display button then give it focus */
|
||||
$add_button.show().find('button').focus();
|
||||
subwidget.addEventListener('transitionend', function(event){
|
||||
if (event.propertyName != "height") return;
|
||||
$subwidget.nextAll('.BlockSubWidget').each(function(i, elem) {
|
||||
const prefix1 = prefix + (idx + i + 1);
|
||||
const prefix2 = prefix + (idx + i);
|
||||
replace_prefix(elem, prefix1, prefix2);
|
||||
$(elem).find('*').each(function(i, elem_child) { replace_prefix(elem_child, prefix1, prefix2); });
|
||||
});
|
||||
/* then remove row */
|
||||
$subwidget.remove();
|
||||
disable_single_block_remove_button();
|
||||
/* display button then give it focus */
|
||||
$add_button.show().find('button').focus();
|
||||
})
|
||||
|
||||
subwidget.style.height = subwidget.clientHeight + 'px';
|
||||
subwidget.style.transition = 'opacity 350ms, height 250ms 350ms';
|
||||
|
||||
setTimeout( () => {
|
||||
subwidget.style.opacity = '0';
|
||||
subwidget.style.height = '0';
|
||||
}, 20)
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue
J'ai toujours lu qu'il fallait éviter les animations sur height. (?)
Peut-être parce que par défaut ça ne marche pas avec
height: auto
?Ou pour des soucis de perf ?
(une animation sur l'opacité est plus lourde en perf que sur la hauteur).
Une recherche vite fait me donne https://www.freecodecamp.org/news/animating-height-the-right-way/ :
Une autre recherche donne une référence côté google dans cet article, https://web.dev/animations-guide/#triggers
et donc ça répond aussi à :
en disant le contraire.
Merci pour les liens.
Comme j'applique une opacité à 0 en premier, je peux reduire l'espace avec une transition. Je change.
ah ben non, transform ne modifie pas l'espace d'origine.
Je ne vois pas vraiment d'alternative.