(nouns) scroll to top of <Table> when page navigation is used

This commit is contained in:
Valentyne Stigloher 2025-07-31 20:23:26 +02:00
parent f739275809
commit 52e8147e84

View File

@ -42,14 +42,21 @@ const pagesRange = computed((): VPage[] => {
return vPages; return vPages;
}); });
const navigateToPage = (to: number) => {
page.value = to;
focus();
};
const section = useTemplateRef<HTMLElement>('section'); const section = useTemplateRef<HTMLElement>('section');
const focus = () => {
section.value?.scrollIntoView();
};
defineExpose({ defineExpose({
reset() { reset() {
page.value = 0; navigateToPage(0);
},
focus() {
section.value?.scrollIntoView();
}, },
focus,
}); });
</script> </script>
@ -63,9 +70,9 @@ defineExpose({
:key="p.text" :key="p.text"
:class="['page-item', p.page === page ? 'active' : '', p.enabled ? '' : 'disabled']" :class="['page-item', p.page === page ? 'active' : '', p.enabled ? '' : 'disabled']"
> >
<a v-if="p.enabled" class="page-link" href="#" @click.prevent="page = p.page"> <button v-if="p.enabled" type="button" class="page-link" @click="navigateToPage(p.page)">
{{ p.text }} {{ p.text }}
</a> </button>
<span v-else class="page-link"> <span v-else class="page-link">
{{ p.text }} {{ p.text }}
</span> </span>
@ -108,9 +115,9 @@ defineExpose({
:key="p.text" :key="p.text"
:class="['page-item', p.page === page ? 'active' : '', p.enabled ? '' : 'disabled']" :class="['page-item', p.page === page ? 'active' : '', p.enabled ? '' : 'disabled']"
> >
<a v-if="p.enabled" class="page-link" href="#" @click.prevent="page = p.page"> <button v-if="p.enabled" type="button" class="page-link" @click="navigateToPage(p.page)">
{{ p.text }} {{ p.text }}
</a> </button>
<span v-else class="page-link"> <span v-else class="page-link">
{{ p.text }} {{ p.text }}
</span> </span>