mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-11-23 04:17:45 +00:00
59 lines
1.6 KiB
Vue
59 lines
1.6 KiB
Vue
<template>
|
|
<div class="col-12">
|
|
<!-- Loading state -->
|
|
<div
|
|
v-if="isTicketLoading"
|
|
class="d-flex justify-content-center align-items-center"
|
|
style="height: 200px"
|
|
>
|
|
<div class="text-center">
|
|
<div class="spinner-border mb-3" role="status">
|
|
<span class="visually-hidden">{{
|
|
trans(CHILL_TICKET_LIST_LOADING_TICKET)
|
|
}}</span>
|
|
</div>
|
|
<div class="text-muted">
|
|
{{ trans(CHILL_TICKET_LIST_LOADING_TICKET) }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Ticket list -->
|
|
<ticket-list-component
|
|
v-else
|
|
:tickets="ticketList"
|
|
title=""
|
|
:hasMoreTickets="pagination.next !== null"
|
|
@fetchNextPage="fetchNextPage"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { computed } from "vue";
|
|
import { useStore } from "vuex";
|
|
// Components
|
|
import TicketListComponent from "../../../../../ChillTicketBundle/src/Resources/public/vuejs/TicketList/components/TicketListComponent.vue";
|
|
|
|
// Types
|
|
import { Pagination } from "ChillMainAssets/lib/api/apiMethods";
|
|
import { TicketSimple } from "src/Bundle/ChillTicketBundle/src/Resources/public/types";
|
|
|
|
// Translation
|
|
import { CHILL_TICKET_LIST_LOADING_TICKET, trans } from "translator";
|
|
|
|
const store = useStore();
|
|
const pagination = computed(() => store.getters.getPagination as Pagination);
|
|
|
|
const ticketList = computed(
|
|
() => store.getters.getTicketList as TicketSimple[],
|
|
);
|
|
const isTicketLoading = computed(() => store.getters.isTicketLoading);
|
|
|
|
const fetchNextPage = async () => {
|
|
if (pagination.value.next) {
|
|
await store.dispatch("fetchTicketListByUrl", pagination.value.next);
|
|
}
|
|
};
|
|
</script>
|