diff options
| author | Aaron Bohy <aab@odoo.com> | 2020-06-23 07:39:55 +0000 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2020-06-23 09:03:34 +0000 |
| commit | 61a3a4d52d70580435ad48245d3739d7aa7852fe (patch) | |
| tree | 2014113f68b937b91b77df4cf6d562b2d5b0eecf /addons/web/static/src/js/views/list | |
| parent | 7a4e90de8aef581cb78ddfbd3cb5f5abcc1137ec (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/views/list')
| -rw-r--r-- | addons/web/static/src/js/views/list/list_renderer.js | 19 |
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); }); |
