diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css
index 5b4d18c2e71..194d8fad146 100644
--- a/addons/web_kanban/static/src/css/kanban.css
+++ b/addons/web_kanban/static/src/css/kanban.css
@@ -45,11 +45,17 @@
.openerp .oe_kanban_view.oe_kanban_ungrouped .oe_kanban_groups {
width: 100%;
}
-.openerp .oe_kanban_view.oe_kanban_sortable_groups .oe_kanban_group_title {
+.openerp .oe_kanban_view.oe_kanban_grouped_by_m2o .oe_kanban_group_title {
cursor: move;
}
-.openerp .oe_kanban_view .oe_kanban_header:hover .oe_dropdown_kanban {
- display: inline-block;
+.openerp .oe_kanban_view .oe_kanban_header .oe_dropdown_kanban {
+ float: right;
+}
+.openerp .oe_kanban_view .oe_kanban_header .oe_dropdown_kanban > span {
+ visibility: hidden;
+}
+.openerp .oe_kanban_view .oe_kanban_header:hover .oe_dropdown_kanban > span {
+ visibility: visible;
}
.openerp .oe_kanban_view .oe_kanban_header .oe_dropdown_menu {
font-weight: normal;
@@ -97,6 +103,9 @@
.openerp .oe_kanban_view .oe_kanban_group_folded .oe_kanban_group_title_vertical {
display: block;
}
+.openerp .oe_kanban_view .oe_kanban_group_folded .oe_dropdown_kanban {
+ left: -5px;
+}
.openerp .oe_kanban_view .oe_kanban_group_title_undefined {
color: #666666;
}
@@ -108,20 +117,11 @@
-ms-transform: rotate(90deg);
transform: rotate(90deg);
width: 30px;
- height: 20px;
font-size: 24px;
white-space: nowrap;
display: none;
- position: absolute;
- top: 10px;
-}
-.openerp .oe_kanban_view .oe_kanban_fold_icon {
- cursor: pointer;
- float: left;
- padding: 2px;
- width: 16px;
- height: 16px;
- background: url(/web_kanban/static/src/img/minus-icon.png) no-repeat;
+ position: relative;
+ top: 5px;
}
.openerp .oe_kanban_view .oe_kanban_add, .openerp .oe_kanban_view .oe_kanban_header .oe_dropdown_toggle {
margin-left: 4px;
@@ -466,13 +466,10 @@
top: 28px;
min-width: 160px;
}
-.openerp .oe_kanban_view .oe_kanban_header .oe_dropdown_kanban {
- display: none;
-}
-.openerp .oe_kanban_view .oe_kanban_column .oe_dropdown_kanban.oe_opened > span {
+.openerp .oe_kanban_view .oe_dropdown_kanban.oe_opened > span {
visibility: visible;
}
-.openerp .oe_kanban_view .oe_kanban_column .oe_dropdown_kanban > span {
+.openerp .oe_kanban_view .oe_dropdown_kanban > span {
visibility: hidden;
}
.openerp .oe_kanban_view .oe_kanban_colorpicker {
diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass
index c1a8f48645d..69a4f1d2c97 100644
--- a/addons/web_kanban/static/src/css/kanban.sass
+++ b/addons/web_kanban/static/src/css/kanban.sass
@@ -66,12 +66,16 @@
height: inherit
&.oe_kanban_ungrouped .oe_kanban_groups
width: 100%
- &.oe_kanban_sortable_groups .oe_kanban_group_title
+ &.oe_kanban_grouped_by_m2o .oe_kanban_group_title
cursor: move
.oe_kanban_header
+ .oe_dropdown_kanban
+ float: right
+ .oe_dropdown_kanban > span
+ visibility: hidden
&:hover
- .oe_dropdown_kanban
- display: inline-block
+ .oe_dropdown_kanban > span
+ visibility: visible
.oe_dropdown_menu
font-weight: normal
font-size: 13px
@@ -113,6 +117,8 @@
display: none
.oe_kanban_group_title_vertical
display: block
+ .oe_dropdown_kanban
+ left: -5px
.oe_kanban_group_title_undefined
color: #666666
.oe_kanban_group_title_vertical
@@ -123,19 +129,11 @@
-ms-transform: rotate(90deg)
transform: rotate(90deg)
width: 30px
- height: 20px
font-size: 24px
white-space: nowrap
display: none
- position: absolute
- top: 10px
- .oe_kanban_fold_icon
- cursor: pointer
- float: left
- padding: 2px
- width: 16px
- height: 16px
- background: url(/web_kanban/static/src/img/minus-icon.png) no-repeat
+ position: relative
+ top: 5px
// }}}
// KanbanQuickCreate {{{
.oe_kanban_add, .oe_kanban_header .oe_dropdown_toggle
@@ -390,15 +388,11 @@
left: 0
top: 28px
min-width: 160px
- .oe_kanban_header
- .oe_dropdown_kanban
- display: none
- .oe_kanban_column
- .oe_dropdown_kanban
- &.oe_opened > span
- visibility: visible
- > span
- visibility: hidden
+ .oe_dropdown_kanban
+ &.oe_opened > span
+ visibility: visible
+ > span
+ visibility: hidden
// }}}
// KanbanColorPicker {{{
.oe_kanban_colorpicker
diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js
index dd8c2fbaef0..59825797f3b 100644
--- a/addons/web_kanban/static/src/js/kanban.js
+++ b/addons/web_kanban/static/src/js/kanban.js
@@ -191,7 +191,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
self.group_by_field = self.fields_view.fields[self.group_by] || {};
self.grouped_by_m2o = (self.group_by_field.type === 'many2one');
self.$buttons.find('.oe_alternative').toggle(self.grouped_by_m2o);
- self.$element.toggleClass('oe_kanban_sortable_groups', self.grouped_by_m2o);
+ self.$element.toggleClass('oe_kanban_grouped_by_m2o', self.grouped_by_m2o);
self.datagroup = new instance.web.DataGroup(self, self.dataset.model, domain, context, self.group_by ? [self.group_by] : []);
self.datagroup.list(self.fields_keys, self.do_process_groups, self.do_process_dataset);
});
@@ -349,7 +349,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
var self = this;
_.each(this.groups, function(group) {
unfolded += group.state.folded ? 0 : 1;
- group.$element.css('width', '');
+ group.$element.children(':first').css('width', '');
});
_.each(this.groups, function(group) {
if (!group.state.folded) {
@@ -462,11 +462,14 @@ instance.web_kanban.KanbanGroup = instance.web.Widget.extend({
}
this.$records = $(QWeb.render('KanbanView.group_records_container', { widget : this}));
this.$records.insertBefore(this.view.$element.find('.oe_kanban_groups_records td:last'));
- this.$element.find(".oe_kanban_fold_icon").click(function() {
- self.do_toggle_fold();
- self.view.compute_groups_width();
- return false;
+
+ this.$element.on('click', '.oe_kanban_group_dropdown li a', function(ev) {
+ var fn = 'do_action_' + $(ev.target).data().action;
+ if (typeof(self[fn]) === 'function') {
+ self[fn]($(ev.target));
+ }
});
+
this.$element.find('.oe_kanban_add').click(function () {
if (self.quick) { return; }
var ctx = {};
@@ -493,8 +496,8 @@ instance.web_kanban.KanbanGroup = instance.web.Widget.extend({
this.$records.click(function (ev) {
if (ev.target == ev.currentTarget) {
if (!self.state.folded) {
- add_btn.effect('bounce', {distance: 18, times: 5}, 150)
- }
+ add_btn.effect('bounce', {distance: 18, times: 5}, 150);
+ }
}
});
return def;
@@ -553,6 +556,11 @@ instance.web_kanban.KanbanGroup = instance.web.Widget.extend({
do_toggle_fold: function(compute_width) {
this.$element.add(this.$records).toggleClass('oe_kanban_group_folded');
this.state.folded = this.$element.is('.oe_kanban_group_folded');
+ this.$("ul.oe_kanban_group_dropdown li a[data-action=toggle_fold]").text((this.state.folded) ? _t("Unfold") : _t("Fold"));
+ },
+ do_action_toggle_fold: function() {
+ this.do_toggle_fold();
+ this.view.compute_groups_width();
},
do_save_sequences: function() {
var self = this;
diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml
index e1da07e3554..125a4eff3c9 100644
--- a/addons/web_kanban/static/src/xml/web_kanban.xml
+++ b/addons/web_kanban/static/src/xml/web_kanban.xml
@@ -32,18 +32,18 @@