summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-03-21 13:58:37 +0100
committerChristophe Simonis <chs@odoo.com>2019-03-21 13:58:37 +0100
commit4eff0af02ef2c182793fce5f32d2d15f53a5fba7 (patch)
tree8790e0051f631240562a9408ccd5e2a5cd64782b /addons/web_editor/static/src/js
parent45e3e432a3621cf03a38ce48562eb967f1ff76e0 (diff)
parent6878c9f3424f27df9b07a665f9c0f5ef6e254996 (diff)
[MERGE] forward port branch saas-12.1 up to 6878c9f3424
Diffstat (limited to 'addons/web_editor/static/src/js')
-rw-r--r--addons/web_editor/static/src/js/wysiwyg_snippets/snippets.options.js28
1 files changed, 22 insertions, 6 deletions
diff --git a/addons/web_editor/static/src/js/wysiwyg_snippets/snippets.options.js b/addons/web_editor/static/src/js/wysiwyg_snippets/snippets.options.js
index 0d2bd5a6e79..2f009feb075 100644
--- a/addons/web_editor/static/src/js/wysiwyg_snippets/snippets.options.js
+++ b/addons/web_editor/static/src/js/wysiwyg_snippets/snippets.options.js
@@ -132,7 +132,7 @@ var SnippetOption = Widget.extend({
* @param {jQuery} $opt - the related DOMElement option
*/
selectClass: function (previewMode, value, $opt) {
- var $group = $opt && $opt.closest('.dropdown-submenu');
+ var $group = $opt && $opt.parents('.dropdown-submenu').last();
if (!$group || !$group.length) {
$group = this.$el;
}
@@ -295,13 +295,29 @@ var SnippetOption = Widget.extend({
})
.addClass('active');
- _processSelectClassElements(this.$el);
+ // Get submenus which are not inside submenus
+ var $submenus = this.$el.find('.dropdown-submenu')
+ .addBack('.dropdown-submenu')
+ .not('.dropdown-submenu .dropdown-submenu');
- function _processSelectClassElements($el) {
+ // Add unique active class for each submenu active item
+ _.each($submenus, function (submenu) {
+ var $elements = _getSelectClassElements($(submenu));
+ _processSelectClassElements($elements);
+ });
+
+ // Add unique active class for out-of-submenu active item
+ var $externalElements = _getSelectClassElements(this.$el)
+ .not('.dropdown-submenu *, .dropdown-submenu');
+ _processSelectClassElements($externalElements);
+
+ function _getSelectClassElements($el) {
+ return $el.find('[data-select-class]')
+ .addBack('[data-select-class]');
+ }
+ function _processSelectClassElements($elements) {
var maxNbClasses = -1;
- $el.find('[data-select-class]')
- .addBack('[data-select-class]')
- .removeClass('active')
+ $elements.removeClass('active')
.filter(function () {
var className = $(this).data('selectClass');
var nbClasses = className ? className.split(' ').length : 0;