From 085fd873d62d6bd698f2ea1967e2bd8a52de81bd Mon Sep 17 00:00:00 2001 From: Chenyun Yang Date: Tue, 16 May 2023 10:14:56 +0000 Subject: [PATCH] [IMP] spreadsheet[_dashboard]: delete relation filter values using backspace key MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit implements the functionality of using backspace key to delete values in relation filter. task 3324738 closes odoo/odoo#121513 Signed-off-by: Lucas Lefèvre (lul) --- .../records_selector/records_selector.js | 9 +++++++ .../records_selector/records_selector.xml | 4 ++- addons/spreadsheet/static/tests/utils/ui.js | 8 +++++- .../tests/dashboard/dashboard_action_test.js | 26 +++++++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.js b/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.js index e2cbf43a832..65faf7b9eaa 100644 --- a/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.js +++ b/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.js @@ -27,6 +27,15 @@ export class RecordsSelector extends Component { })); } + onKeydown(ev) { + if (this.props.resIds.length === 0) { + return; + } + if (ev.key.toUpperCase() === "BACKSPACE") { + this.removeRecord(this.props.resIds[this.props.resIds.length - 1]); + } + } + searchDomain() { return Domain.not([["id", "in", this.props.resIds]]).toList(); } diff --git a/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.xml b/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.xml index a43748f3d34..fbaf357baae 100644 --- a/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.xml +++ b/addons/spreadsheet/static/src/global_filters/components/records_selector/records_selector.xml @@ -3,7 +3,9 @@
-
+
Dashboard > Dashboard action"); @@ -190,3 +191,28 @@ QUnit.test( assert.equal(year.placeholder, "Select year..."); } ); + +QUnit.test("Can delete record tag in the filter by hitting Backspace", async function (assert) { + const spreadsheetData = { + globalFilters: [ + { + id: "1", + type: "relation", + label: "Relation Filter", + modelName: "product", + defaultValue: [37], + automaticDefaultValue: true, + }, + ], + }; + const serverData = getServerData(spreadsheetData); + const fixture = getFixture(); + await createSpreadsheetDashboard({ serverData }); + const filter = fixture.querySelector(".o_control_panel_actions div.o_field_tags"); + const autoCompleteInput = filter.querySelector(".o-autocomplete--input.o_input"); + assert.equal(filter.querySelectorAll(".o_tag").length, 1); + + autoCompleteInput.focus(); + await keyDown({ key: "Backspace" }); + assert.equal(filter.querySelectorAll(".o_tag").length, 0); +});