Add incremental loading to manager and client lists

This commit is contained in:
Ruslan Bakiev
2026-04-06 11:49:38 +07:00
parent 7c5d0967a0
commit d119a76ae6
7 changed files with 348 additions and 71 deletions

View File

@@ -143,6 +143,18 @@ const searchedOrders = computed<ManagerOrderItem[]>(() => {
const filteredOrders = computed<ManagerOrderItem[]>(() => searchedOrders.value.filter((order) => matchesFilter(order)));
const {
canLoadMore,
loadMore,
loadMoreSentinel,
remainingCount,
visibleItems: visibleOrders,
} = useIncrementalList(filteredOrders, {
pageSize: 24,
enabled: computed(() => viewMode.value === 'list'),
resetKeys: [search, statusFilter, viewMode],
});
function escapeHtml(value: string) {
return String(value)
.replaceAll('&', '&amp;')
@@ -315,7 +327,7 @@ const calendarOptions = computed(() => ({
<div v-else class="space-y-4">
<OrdersOrderSummaryCard
v-for="order in filteredOrders"
v-for="order in visibleOrders"
:key="order.id"
:to="`/client-orders/${order.id}`"
:code="order.code"
@@ -324,6 +336,16 @@ const calendarOptions = computed(() => ({
:total-price="order.totalPrice"
:items="order.items"
/>
<div
v-if="canLoadMore"
ref="loadMoreSentinel"
class="flex justify-center pt-2"
>
<button class="btn btn-outline border-[#d7e9de] bg-white" @click="loadMore">
Показать ещё {{ Math.min(remainingCount, 24) }}
</button>
</div>
</div>
</section>
</template>