diff --git a/addons/website/static/src/js/editor/snippets.options.js b/addons/website/static/src/js/editor/snippets.options.js
index bfcafc27a93..bda6027aade 100644
--- a/addons/website/static/src/js/editor/snippets.options.js
+++ b/addons/website/static/src/js/editor/snippets.options.js
@@ -2910,7 +2910,7 @@ options.registry.ScrollButton = options.Class.extend({
},
});
-options.registry.ConditionalVisibility = options.Class.extend({
+options.registry.ConditionalVisibility = options.registry.DeviceVisibility.extend({
/**
* @constructor
*/
@@ -2942,6 +2942,7 @@ options.registry.ConditionalVisibility = options.Class.extend({
* @override
*/
async onTargetHide() {
+ await this._super(...arguments);
if (this.$target[0].classList.contains('o_snippet_invisible')) {
this.$target[0].classList.add('o_conditional_hidden');
}
@@ -2950,12 +2951,14 @@ options.registry.ConditionalVisibility = options.Class.extend({
* @override
*/
async onTargetShow() {
+ await this._super(...arguments);
this.$target[0].classList.remove('o_conditional_hidden');
},
/**
* @override
*/
- cleanForSave() {
+ async cleanForSave() {
+ await this._super(...arguments);
// Kinda hacky: the snippet is forced hidden via onTargetHide on save
// but should be marked as visible as when entering edit mode later, the
// snippet will be shown naturally (as the CSS rules won't apply).
diff --git a/addons/website/views/snippets/snippets.xml b/addons/website/views/snippets/snippets.xml
index 8b8ef6bbfed..e125d7b60a4 100644
--- a/addons/website/views/snippets/snippets.xml
+++ b/addons/website/views/snippets/snippets.xml
@@ -1210,13 +1210,26 @@
+