diff --git a/addons/website/static/src/js/editor/snippets.options.js b/addons/website/static/src/js/editor/snippets.options.js index a2fcd6e6290..18baaf0fc01 100644 --- a/addons/website/static/src/js/editor/snippets.options.js +++ b/addons/website/static/src/js/editor/snippets.options.js @@ -1823,9 +1823,17 @@ options.registry.CarouselItem = options.Class.extend({ const $items = this.$carousel.find('.carousel-item'); const newLength = $items.length - 1; if (!this.removing && newLength > 0) { + // The active indicator is deleted to ensure that the other + // indicators will still work after the deletion. const $toDelete = $items.filter('.active').add(this.$indicators.find('.active')); this.$carousel.one('active_slide_targeted.carousel_item_option', () => { $toDelete.remove(); + // To ensure the proper functioning of the indicators, their + // attributes must reflect the position of the slides. + const indicatorsEls = this.$indicators[0].querySelectorAll('li'); + for (let i = 0; i < indicatorsEls.length; i++) { + indicatorsEls[i].setAttribute('data-bs-slide-to', i); + } this.$controls.toggleClass('d-none', newLength === 1); this.$carousel.trigger('content_changed'); this.removing = false;