summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2018-10-18 13:28:09 +0000
committerqsm-odoo <qsm@odoo.com>2018-10-19 09:06:16 +0000
commitc2b8d2a3017256e4ea60a3710bdaab6d1f693d81 (patch)
tree152ffefefcc13df289024591d06b5ff5b899a401 /addons/web_editor/static/src/js
parentdea13722158af6bf481e755cd39b31022f63e074 (diff)
[FIX] web_editor: review _setActive system for select-class
- Handle the case where one select-class is a subset of another select-class of the same group e.g. <... data-select-class="hello"/> <... data-select-class="hello world"/> - Handle empty values <... data-select-class=""/> Note: both cases worked but were not displaying the active checkbox correctly in the editor UI.
Diffstat (limited to 'addons/web_editor/static/src/js')
-rw-r--r--addons/web_editor/static/src/js/editor/snippets.options.js31
1 files changed, 26 insertions, 5 deletions
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 346fc3d8f91..67df263f60f 100644
--- a/addons/web_editor/static/src/js/editor/snippets.options.js
+++ b/addons/web_editor/static/src/js/editor/snippets.options.js
@@ -275,15 +275,36 @@ var SnippetOption = Widget.extend({
*/
_setActive: function () {
var self = this;
- this.$el.find('[data-toggle-class], [data-select-class]')
- .addBack('[data-toggle-class], [data-select-class]')
+ this.$el.find('[data-toggle-class]')
+ .addBack('[data-toggle-class]')
.removeClass('active')
.filter(function () {
- var $elem = $(this);
- var className = $elem.data('toggleClass') || $elem.data('selectClass');
- return self.$target.hasClass(className);
+ var className = $(this).data('toggleClass');
+ return !className || self.$target.hasClass(className);
})
.addClass('active');
+
+ _processSelectClassElements(this.$el);
+ _.each(this.$el.find('.dropdown-menu'), function (group) {
+ _processSelectClassElements($(group).children());
+ });
+
+ function _processSelectClassElements($elements) {
+ var maxNbClasses = -1;
+ $elements.filter('[data-select-class]')
+ .removeClass('active')
+ .filter(function () {
+ var className = $(this).data('selectClass');
+ var nbClasses = className ? className.split(' ').length : 0;
+ if (nbClasses >= maxNbClasses && (!className || self.$target.hasClass(className))) {
+ maxNbClasses = nbClasses;
+ return true;
+ }
+ return false;
+ })
+ .last()
+ .addClass('active');
+ }
},
//--------------------------------------------------------------------------