diff --git a/web_group_expand/readme/CONTRIBUTORS.md b/web_group_expand/readme/CONTRIBUTORS.md index 46e5537110e4..80bedd2be2f1 100644 --- a/web_group_expand/readme/CONTRIBUTORS.md +++ b/web_group_expand/readme/CONTRIBUTORS.md @@ -8,3 +8,4 @@ - Mayank Patel \<\> - [360ERP](https://www.360erp.com): - Andrea Stirpe +- Arif Waram \<\> diff --git a/web_group_expand/readme/DESCRIPTION.md b/web_group_expand/readme/DESCRIPTION.md index 7255e7128368..c3c352a66d27 100644 --- a/web_group_expand/readme/DESCRIPTION.md +++ b/web_group_expand/readme/DESCRIPTION.md @@ -4,3 +4,7 @@ or collapse all the groups at once. The buttons appear in the top right, in place of the pagination. One level of groups is expanded or collapsed at a time. + +The buttons are disabled when they would have no effect: the expand +button when all groups are already expanded, and the collapse button +when all groups are already collapsed. diff --git a/web_group_expand/static/src/js/list_controller.esm.js b/web_group_expand/static/src/js/list_controller.esm.js index aea3acfe7aa3..f84127700396 100644 --- a/web_group_expand/static/src/js/list_controller.esm.js +++ b/web_group_expand/static/src/js/list_controller.esm.js @@ -8,6 +8,22 @@ function flatten(arr) { } patch(ListController.prototype, { + get allGroupsExpanded() { + let layer = this.model.root.groups || []; + while (layer.length) { + if (layer.some((group) => group._config.isFolded)) { + return false; + } + layer = layer.flatMap((group) => group.list.groups || []); + } + return true; + }, + + get allGroupsCollapsed() { + const groups = this.model.root.groups || []; + return groups.every((group) => group._config.isFolded); + }, + async expandAllGroups() { // We expand layer by layer. So first we need to find the highest // layer that's not already fully expanded. diff --git a/web_group_expand/static/src/xml/list_controller.xml b/web_group_expand/static/src/xml/list_controller.xml index 743b8aa35c51..b7e67c6e96d8 100644 --- a/web_group_expand/static/src/xml/list_controller.xml +++ b/web_group_expand/static/src/xml/list_controller.xml @@ -8,6 +8,7 @@ class="btn btn-secondary fa fa-expand oe_group_by_expand" data-tooltip="Expand" aria-label="Expand" + t-att-disabled="allGroupsExpanded" t-on-click="expandAllGroups" />