summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2020-06-23 07:39:55 +0000
committerAaron Bohy <aab@odoo.com>2020-06-23 09:03:34 +0000
commit61a3a4d52d70580435ad48245d3739d7aa7852fe (patch)
tree2014113f68b937b91b77df4cf6d562b2d5b0eecf /addons/web/static/src/js
parent7a4e90de8aef581cb78ddfbd3cb5f5abcc1137ec (diff)
[FIX] web: list: buttons with attrs column_invisible
Since commit 042b4060bdbbd, attrs 'column_invisible' on button was ignored. This commit makes this work alongside the adjacent button grouping feature: if all adjacent buttons have their attrs column_invisible evaluated to true, no column is rendered for this group of adjacent buttons. closes odoo/odoo#53489 X-original-commit: 3110e34ab8e5ec3bf7160655af21f72b4d2179db Signed-off-by: Julien Mougenot (jum) <jum@odoo.com> Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/views/list/list_renderer.js19
1 files changed, 13 insertions, 6 deletions
diff --git a/addons/web/static/src/js/views/list/list_renderer.js b/addons/web/static/src/js/views/list/list_renderer.js
index b35c42810a8..aa59598e712 100644
--- a/addons/web/static/src/js/views/list/list_renderer.js
+++ b/addons/web/static/src/js/views/list/list_renderer.js
@@ -66,7 +66,7 @@ var ListRenderer = BasicRenderer.extend({
init: function (parent, state, params) {
this._super.apply(this, arguments);
this._preprocessColumns();
- this.columnInvisibleFields = params.columnInvisibleFields;
+ this.columnInvisibleFields = params.columnInvisibleFields || {};
this.rowDecorations = this._extractDecorationAttrs(this.arch);
this.fieldDecorations = {};
for (const field of this.arch.children.filter(c => c.tag === 'field')) {
@@ -86,7 +86,7 @@ var ListRenderer = BasicRenderer.extend({
* @override
*/
willStart: function () {
- this._processColumns(this.columnInvisibleFields || {});
+ this._processColumns(this.columnInvisibleFields);
return this._super.apply(this, arguments);
},
@@ -108,7 +108,8 @@ var ListRenderer = BasicRenderer.extend({
updateState: function (state, params) {
this._setState(state);
this.isGrouped = this.state.groupedBy.length > 0;
- this._processColumns(params.columnInvisibleFields || {});
+ this.columnInvisibleFields = params.columnInvisibleFields || {};
+ this._processColumns(this.columnInvisibleFields);
if (params.selectedRecords) {
this.selection = params.selectedRecords;
}
@@ -369,7 +370,11 @@ var ListRenderer = BasicRenderer.extend({
var reject = c.attrs.modifiers.column_invisible;
// If there is an evaluated domain for the field we override the node
// attribute to have the evaluated modifier value.
- if (c.attrs.name in columnInvisibleFields) {
+ if (c.tag === "button_group") {
+ // FIXME: 'column_invisible' attribute is available for fields *and* buttons,
+ // so 'columnInvisibleFields' variable name is misleading, it should be renamed
+ reject = c.children.every(child => columnInvisibleFields[child.attrs.name]);
+ } else if (c.attrs.name in columnInvisibleFields) {
reject = columnInvisibleFields[c.attrs.name];
}
if (!reject && c.attrs.widget === 'handle') {
@@ -523,7 +528,9 @@ var ListRenderer = BasicRenderer.extend({
if (node.tag === 'button_group') {
for (const buttonNode of node.children) {
- $td.append(this._renderButton(record, buttonNode));
+ if (!this.columnInvisibleFields[buttonNode.attrs.name]) {
+ $td.append(this._renderButton(record, buttonNode));
+ }
}
return $td;
} else if (node.tag === 'widget') {
@@ -1237,7 +1244,7 @@ var ListRenderer = BasicRenderer.extend({
keyParts: this._getOptionalColumnsStorageKeyParts(),
optionalColumnsEnabled: this.optionalColumnsEnabled,
});
- this._processColumns(this.columnInvisibleFields || {});
+ this._processColumns(this.columnInvisibleFields);
this._render().then(function () {
self._onToggleOptionalColumnDropdown(ev);
});