diff --git a/addons/web_editor/static/src/js/editor/snippets.options.js b/addons/web_editor/static/src/js/editor/snippets.options.js index 288df97ad32..22232197d32 100644 --- a/addons/web_editor/static/src/js/editor/snippets.options.js +++ b/addons/web_editor/static/src/js/editor/snippets.options.js @@ -5214,11 +5214,19 @@ registry.SnippetMove = SnippetOptionWidget.extend({ } if (!this.$target.is(this.data.noScroll) && (params.name === 'move_up_opt' || params.name === 'move_down_opt')) { - scrollTo(this.$target[0], { - extraOffset: 50, - easing: 'linear', - duration: 550, - }); + const mainScrollingEl = $().getScrollingElement()[0]; + const elTop = this.$target[0].getBoundingClientRect().top; + const heightDiff = mainScrollingEl.offsetHeight - this.$target[0].offsetHeight; + const bottomHidden = heightDiff < elTop; + const hidden = elTop < 0 || bottomHidden; + if (hidden) { + scrollTo(this.$target[0], { + extraOffset: 50, + forcedOffset: bottomHidden ? heightDiff - 50 : undefined, + easing: 'linear', + duration: 500, + }); + } } this.trigger_up('option_update', { optionName: 'StepsConnector',