From 280cc4c14c142c9a5f5ab63615c37c754e306cd0 Mon Sep 17 00:00:00 2001 From: Matheus Roberson Date: Fri, 27 Feb 2026 18:53:42 -0300 Subject: [PATCH] Fixed: range selection in search (Prowlarr/Prowlarr#2306) --- frontend/src/Search/SearchIndex.js | 2 +- frontend/src/Utilities/Table/getToggledRange.js | 7 ++++--- frontend/src/Utilities/Table/toggleSelected.js | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/src/Search/SearchIndex.js b/frontend/src/Search/SearchIndex.js index d12635070..f810509f1 100644 --- a/frontend/src/Search/SearchIndex.js +++ b/frontend/src/Search/SearchIndex.js @@ -239,7 +239,7 @@ class SearchIndex extends Component { onSelectedChange = ({ id, value, shiftKey = false }) => { this.setState((state) => { - return toggleSelected(state, this.props.items, id, value, shiftKey); + return toggleSelected(state, this.props.items, id, value, shiftKey, 'guid'); }); }; diff --git a/frontend/src/Utilities/Table/getToggledRange.js b/frontend/src/Utilities/Table/getToggledRange.js index c0cc44fe5..4d3dfd9e8 100644 --- a/frontend/src/Utilities/Table/getToggledRange.js +++ b/frontend/src/Utilities/Table/getToggledRange.js @@ -1,8 +1,9 @@ import _ from 'lodash'; -function getToggledRange(items, id, lastToggled) { - const lastToggledIndex = _.findIndex(items, { id: lastToggled }); - const changedIndex = _.findIndex(items, { id }); +function getToggledRange(items, id, lastToggled, idProp = 'id') { + const lastToggledIndex = _.findIndex(items, { [idProp]: lastToggled }); + const changedIndex = _.findIndex(items, { [idProp]: id }); + let lower = 0; let upper = 0; diff --git a/frontend/src/Utilities/Table/toggleSelected.js b/frontend/src/Utilities/Table/toggleSelected.js index cdc11e5c1..491901c7c 100644 --- a/frontend/src/Utilities/Table/toggleSelected.js +++ b/frontend/src/Utilities/Table/toggleSelected.js @@ -13,7 +13,7 @@ function toggleSelected(selectedState, items, id, selected, shiftKey, idProp = ' } if (shiftKey && lastToggled) { - const { lower, upper } = getToggledRange(items, id, lastToggled); + const { lower, upper } = getToggledRange(items, id, lastToggled, idProp); for (let i = lower; i < upper; i++) { nextSelectedState[items[i][idProp]] = selected;