From 684bc25b833a71377f1b54383784d4d259b75ad0 Mon Sep 17 00:00:00 2001 From: Nazar Kanaev Date: Sat, 9 Apr 2022 15:58:10 +0100 Subject: [PATCH] fix: load more items to prevent scroll lock --- src/assets/javascripts/app.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/assets/javascripts/app.js b/src/assets/javascripts/app.js index e74c929..e2411fd 100644 --- a/src/assets/javascripts/app.js +++ b/src/assets/javascripts/app.js @@ -419,7 +419,7 @@ var vm = new Vue({ } this.loading.items = true - return api.items.list(query).then(function(data) { + api.items.list(query).then(function(data) { if (loadMore) { vm.items = vm.items.concat(data.list) } else { @@ -427,14 +427,24 @@ var vm = new Vue({ } vm.itemsHasMore = data.has_more vm.loading.items = false + + // load more if there's some space left at the bottom of the item list. + vm.$nextTick(function() { + if (vm.itemsHasMore && !vm.loading.items && vm.itemListCloseToBottom()) { + vm.refreshItems(true) + } + }) }) }, + itemListCloseToBottom: function() { + var el = this.$refs.itemlist + var closeToBottom = (el.scrollHeight - el.scrollTop - el.offsetHeight) < 50 + return closeToBottom + }, loadMoreItems: function(event, el) { if (!this.itemsHasMore) return - if (this.loading.items) return - var closeToBottom = (el.scrollHeight - el.scrollTop - el.offsetHeight) < 50 - if (closeToBottom) this.refreshItems(true) + if (this.itemListCloseToBottom()) this.refreshItems(true) }, markItemsRead: function() { var query = this.getItemsQuery()