<script setup lang="ts"> import singleStory from "~/components/listings/singleStory.vue"; import { IStory } from "@models/stories"; const route = useRoute(); let curPage = ref(route.query.page || 1); const props = defineProps<{ prefix?: string; items?: IStory[] }>(); let data; if (!props.prefix) { data = props.items; } else if (!props.items) { data = ( await useApiFetch<any>(`${props.prefix}`, { query: { page: curPage, }, }) ).data; } let rdata = ref(data); const pagiChange = async (page, pageSize) => { curPage.value = page; // await navigateTo({ // path: useRoute().fullPath, // query: { // page // } // }) let { data: data } = await useApiFetch(`${props.prefix}`, { query: { page: curPage, }, }); rdata.value = data.value; }; </script> <template> <div> <a-list :data-source="rdata.stories" item-layout="vertical"> <template #renderItem="{ item }"> <!-- {{ item.title }} --> <single-story :story="item" /> </template> </a-list> <a-pagination :default-page-size="20" :total="rdata.total" :default-current="curPage as number" @change="pagiChange" :show-quick-jumper="true" :show-size-changer="false" /> </div> <!-- { defaultPageSize: 20, total: rdata.total, defaultCurrent: curPage as number, onChange: pagiChange, // hideOnSinglePage: true, showSizeChanger: false, }--> </template> <style scoped> .ant-list-items > * + * { margin-top: 1.2em; } .ant-pagination { text-align: center; } </style>