Skip to content

Commit 035a980

Browse files
authored
Merge pull request #5750 from ProcessMaker/feature/FOUR-12691
Feature/four 12691: Performance: Implement the Infinite scroll
2 parents 72eb4b6 + f344d5b commit 035a980

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

resources/js/processes-catalogue/components/ProcessesCatalogue.vue

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
title="Avaible Processses"
1414
preicon="fas fa-play-circle"
1515
class="mt-3"
16+
@addCategories="addCategories"
1617
/>
1718
<ul>
1819
<li>
@@ -62,17 +63,23 @@ export default {
6263
showWizardTemplates: false,
6364
showCardProcesses: false,
6465
category: null,
66+
numCategories: 15,
67+
page: 1,
6568
};
6669
},
6770
mounted() {
6871
this.getCategories();
6972
},
7073
methods: {
74+
addCategories() {
75+
this.page += 1;
76+
this.getCategories();
77+
},
7178
getCategories() {
7279
ProcessMaker.apiClient
73-
.get("process_categories")
80+
.get(`process_categories?page=${this.page}&per_page=${this.numCategories}`)
7481
.then((response) => {
75-
this.listCategories = response.data.data;
82+
this.listCategories = [...this.listCategories, ...response.data.data];
7683
});
7784
},
7885
selectCategorie(value) {

resources/js/processes-catalogue/components/menuCatologue.vue

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
id="collapse-3"
1717
visible
1818
>
19-
<b-list-group>
19+
<b-list-group id="infinite-list">
2020
<b-list-group-item
2121
v-for="item in data"
2222
:key="item.id"
@@ -33,8 +33,20 @@
3333

3434
<script>
3535
export default {
36-
props: ["data", "select", "title", "preicon"],
37-
methods: {
36+
props: ["data", "select", "title", "preicon", "numCategories"],
37+
mounted() {
38+
const listElm = document.querySelector('#infinite-list');
39+
listElm.addEventListener("scroll", e => {
40+
if (listElm.scrollTop + listElm.clientHeight >= listElm.scrollHeight) {
41+
this.loadMore();
42+
}
43+
});
44+
},
45+
methods: {
46+
/** Adding categories */
47+
loadMore() {
48+
this.$emit("addCategories");
49+
},
3850
selectItem(item) {
3951
this.setSelectItem(item.name);
4052
this.select(item);
@@ -80,4 +92,10 @@ i {
8092
color: #1572C2;
8193
font-weight: 700;
8294
}
95+
.fade-enter-active, .fade-leave-active {
96+
transition: opacity .5s
97+
}
98+
.fade-enter, .fade-leave-to {
99+
opacity: 0
100+
}
83101
</style>

0 commit comments

Comments
 (0)