11<template >
22 <div class =" flex flex-col max-w-md gap-2 mx-auto" >
33 <div class =" flex flex-col gap-2" >
4+ <div class =" pl-0.5 flex flex-wrap gap-2" >
5+ <input
6+ v-model =" searchQuery"
7+ name =" search"
8+ type =" text"
9+ class =" h-8 border-2 input input-bordered rounded-2xl placeholder-neutral-content"
10+ :placeholder =" `Filter by username`"
11+ >
12+
13+ </div >
414 <UserTable :user-profiles =" userProfiles" />
515 <Pagination v-model:current-page =" currentPage" v-model:page-size =" pageSize" :total-results =" userProfilesTotal" />
616 </div >
@@ -24,15 +34,18 @@ const pageSize: Ref<number> = ref(isNaN(queryPageSize) ? defaultPageSize : query
2434const userProfiles: Ref <Array <UserProfile >> = ref ([]);
2535const userProfilesTotal = ref (0 );
2636const currentPage: Ref <number > = ref (Number (route .query ?.page as string ) || 1 );
37+ const searchQuery: Ref <string > = ref (null );
2738
2839watch (() => route .fullPath , () => {
40+ searchQuery .value = route .query .search as string ?? null ;
2941 currentPage .value = isNaN (route .query .page ) ? 1 : parseInt (route .query .page );
3042 pageSize .value = isNaN (route .query .pageSize ) ? defaultPageSize : parseInt (route .query .pageSize );
3143});
3244
33- watch (currentPage , () => {
45+ watch ([ searchQuery , currentPage ] , () => {
3446 router .push ({
3547 query: {
48+ search: searchQuery .value ,
3649 pageSize: pageSize .value ,
3750 page: currentPage .value
3851 }
@@ -45,6 +58,7 @@ watch(currentPage, () => {
4558watch (pageSize , () => {
4659 router .push ({
4760 query: {
61+ search: searchQuery .value ,
4862 pageSize: pageSize .value ,
4963 page: 1
5064 }
@@ -54,19 +68,22 @@ watch(pageSize, () => {
5468});
5569
5670onActivated (() => {
71+ searchQuery .value = route .query .search as string ?? null ;
5772 pageSize .value = route .query .pageSize as number ?? defaultPageSize ;
5873 currentPage .value = route .query .page as number ?? 1 ;
5974});
6075
6176onMounted (() => {
77+ searchQuery .value = route .query .search as string ?? null ;
6278 loadUserProfiles ();
6379});
6480
6581function loadUserProfiles () {
6682 rest .value .user .getUserProfiles (
6783 {
6884 pageSize: pageSize .value ,
69- page: currentPage .value
85+ page: currentPage .value ,
86+ searchQuery: searchQuery .value
7087 }
7188 )
7289 .then ((v ) => {
0 commit comments