From a7d9fe87bd58ec3a7c785ae43cd08681968b4e80 Mon Sep 17 00:00:00 2001 From: Matt Blenkinsop Date: Wed, 29 Nov 2023 14:54:33 +0000 Subject: [PATCH] Bug 32474: Fix persistence of selections when pagination re-triggers Currently when the select is closed and then re-opens, the pagination is re-triggered which removes the data that the lable is being pulled from for the select. This patch addresses this by keeping the currently selected piece of data and adding it into the re-paginated array of data. --- .../vue/components/InfiniteScrollSelect.vue | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/InfiniteScrollSelect.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/InfiniteScrollSelect.vue index 9dac42b808..ccce19d481 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/InfiniteScrollSelect.vue +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/InfiniteScrollSelect.vue @@ -76,6 +76,18 @@ export default { }, methods: { async fetchInitialData(dataType) { + let currentSelection + if (this.modelValue) { + const dataToPersist = this.data.find( + item => this.modelValue === item[this.dataIdentifier] + ) + const preSelectedData = this.selectedData[this.dataIdentifier] + ? this.selectedData + : null + currentSelection = dataToPersist + ? dataToPersist + : preSelectedData + } const client = APIClient.erm await client[dataType] .getAll( @@ -88,7 +100,17 @@ export default { ) .then( items => { - this.data = items + const checkDuplicate = items.find( + item => + currentSelection[this.dataIdentifier] === + item[this.dataIdentifier] + ) + currentSelection = checkDuplicate + ? null + : currentSelection + this.data = currentSelection + ? [currentSelection, ...items] + : items this.search = "" this.limit = 19 this.scrollPage = 1 -- 2.37.1 (Apple Git-137.1)