From 3dbc1b8fd1342ea4904a88ebe51535fbeb15205e Mon Sep 17 00:00:00 2001 From: Khafid Prayoga Date: Thu, 4 Sep 2025 11:26:58 +0700 Subject: [PATCH] refactor(pagination): move pagination info display to component and improve layout - Consolidate pagination info display logic in pagination component - Remove duplicate computed properties from list components - Improve pagination layout with better spacing and responsiveness - Add skeleton loading support to data tables --- app/components/app/divison/list.vue | 53 +++---------------- app/components/app/installation/list.vue | 39 +++----------- .../pub/custom-ui/pagination/pagination.vue | 47 ++++++++-------- 3 files changed, 40 insertions(+), 99 deletions(-) diff --git a/app/components/app/divison/list.vue b/app/components/app/divison/list.vue index 3aecc2e8..cf0d5ea2 100644 --- a/app/components/app/divison/list.vue +++ b/app/components/app/divison/list.vue @@ -7,7 +7,7 @@ interface Props { paginationMeta?: PaginationMeta } -const props = defineProps() +defineProps() const emit = defineEmits<{ pageChange: [page: number] @@ -16,57 +16,20 @@ const emit = defineEmits<{ function handlePageChange(page: number) { emit('pageChange', page) } - -// Computed properties for formatted display -const formattedRecordCount = computed(() => { - if (!props.paginationMeta) return '0' - const count = props.paginationMeta.recordCount - if (count == null || count === undefined) return '0' - return Number(count).toLocaleString('id-ID') -}) - -const startRecord = computed(() => { - if (!props.paginationMeta) return 1 - return ((props.paginationMeta.page - 1) * props.paginationMeta.pageSize) + 1 -}) - -const endRecord = computed(() => { - if (!props.paginationMeta) return 0 - return Math.min(props.paginationMeta.page * props.paginationMeta.pageSize, props.paginationMeta.recordCount) -}) diff --git a/app/components/app/installation/list.vue b/app/components/app/installation/list.vue index 8f598ad6..a6b19eb2 100644 --- a/app/components/app/installation/list.vue +++ b/app/components/app/installation/list.vue @@ -7,7 +7,7 @@ interface Props { paginationMeta?: PaginationMeta } -const props = defineProps() +defineProps() const emit = defineEmits<{ pageChange: [page: number] @@ -16,48 +16,21 @@ const emit = defineEmits<{ function handlePageChange(page: number) { emit('pageChange', page) } - -// Computed properties for formatted display -const formattedRecordCount = computed(() => { - if (!props.paginationMeta) return '0' - const count = props.paginationMeta.recordCount - if (count == null || count === undefined) return '0' - return Number(count).toLocaleString('id-ID') -}) - -const startRecord = computed(() => { - if (!props.paginationMeta) return 1 - return ((props.paginationMeta.page - 1) * props.paginationMeta.pageSize) + 1 -}) - -const endRecord = computed(() => { - if (!props.paginationMeta) return 0 - return Math.min(props.paginationMeta.page * props.paginationMeta.pageSize, props.paginationMeta.recordCount) -}) diff --git a/app/components/pub/custom-ui/pagination/pagination.vue b/app/components/pub/custom-ui/pagination/pagination.vue index 797922e2..694e3b7b 100644 --- a/app/components/pub/custom-ui/pagination/pagination.vue +++ b/app/components/pub/custom-ui/pagination/pagination.vue @@ -87,39 +87,44 @@ function getButtonClass(pageNumber: number) { - - - - + + + + +