Skip to content

Commit

Permalink
🎨 Fix flicker on users table.
Browse files Browse the repository at this point in the history
Solution: ignore page change while loading. This is a better work-around for:
> Use of v-skeleton-loader. If you don't do this the v-data-table-server component will reset the page value on load. See vuetifyjs/vuetify#17966
  • Loading branch information
klondikemarlen committed Mar 13, 2024
1 parent 49fbafc commit cecf1ed
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions web/src/components/users/UsersEditTable.vue
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
<template>
<v-skeleton-loader
v-if="isLoading"
type="table"
/>
<v-data-table-server
v-else
v-model:items-per-page="itemsPerPage"
v-model:page="page"
:page="page"
:headers="headers"
:items="users"
:items-length="totalCount"
:loading="isLoading"
class="elevation-1"
@dblclick:row="(_event: unknown, { item }: UserTableRow) => goToUserEdit(item.id)"
@update:page="updatePage"
>
<template #top>
<UserDeleteDialog
Expand Down Expand Up @@ -93,13 +89,35 @@ const router = useRouter()
const itemsPerPage = ref(parseInt(route.query.perPage as string) || 10)
const page = ref(parseInt(route.query.page as string) || 1)
function updatePage(newPage: number) {
if (isLoading.value) return
page.value = newPage
}
const usersQuery = computed(() => ({
perPage: itemsPerPage.value,
page: page.value,
}))
const { users, totalCount, isLoading, refresh } = useUsers(usersQuery)
watch(
() => [itemsPerPage.value, page.value],
([newPerPage, newPage]) => {
router.push({
query: {
...route.query,
perPage: newPerPage,
page: newPage,
},
})
},
{
immediate: true,
}
)
function goToUserEdit(userId: number) {
router.push({
name: "UserEditPage",
Expand All @@ -125,22 +143,6 @@ function showDeleteDialogForRouteQuery() {
showDeleteDialog(user)
}
watch(
() => [page.value, itemsPerPage.value],
([newPage, newPerPage]) => {
router.push({
query: {
...route.query,
page: newPage,
perPage: newPerPage,
},
})
},
{
immediate: true,
}
)
watch(
() => users.value,
(users) => {
Expand Down

0 comments on commit cecf1ed

Please sign in to comment.