@@ -20,24 +20,27 @@ interface SortState {
2020}
2121
2222export function usePaginatedData (
23- defaultFilters : PrimeVue . PaginatedDataFilters = { } ,
23+ initialFilters : PrimeVue . PaginatedDataFilters = { } ,
2424 only : string [ ] = [ 'request' ] ,
2525 initialsRows : number = 20
2626) {
27+ const defaultFilters = initialFilters ;
28+ const defaultRows = initialsRows ;
29+
2730 const page = usePage < {
2831 request : {
2932 urlParams : PrimeVue . PaginatedDataUrlParams ;
3033 } ;
3134 } > ( ) ;
3235
3336 const processing = ref < boolean > ( false ) ;
34- const filters = ref < PrimeVue . PaginatedDataFilters > ( defaultFilters ) ;
37+ const filters = ref < PrimeVue . PaginatedDataFilters > ( initialFilters ) ;
3538 const sorting = ref < SortState > ( {
3639 field : '' ,
3740 order : 1 ,
3841 } ) ;
3942 const pagination = ref < PaginationState > ( {
40- page : parseInt ( page . props . request . urlParams ?. page ?? '1' ) ,
43+ page : 1 ,
4144 rows : initialsRows ,
4245 } ) ;
4346
@@ -108,16 +111,23 @@ export function usePaginatedData(
108111 }
109112
110113 function reset ( ) {
111- filters . value = defaultFilters ;
114+ // Alternatively just use: router.get(window.location.pathname);
115+ // Caveat to the above approach, we would lose state from our page not related to pagination/filtering/sorting
116+
117+ Object . keys ( defaultFilters ) . forEach ( ( key ) => {
118+ filters . value [ key ] . value = defaultFilters [ key ] . value ;
119+ } ) ;
112120 sorting . value = {
113121 field : '' ,
114122 order : 1 ,
115123 } ;
116124 pagination . value = {
117125 page : 1 ,
118- rows : initialsRows ,
126+ rows : defaultRows ,
119127 } ;
120- fetchData ( ) ;
128+ fetchData ( ) . then ( ( ) => {
129+ window . history . replaceState ( null , '' , window . location . pathname ) ;
130+ } ) ;
121131 }
122132
123133 function parseUrlFilterValues ( ) {
@@ -164,10 +174,14 @@ export function usePaginatedData(
164174 } ;
165175 parseUrlFilterValues ( ) ;
166176 if ( urlParams ?. sortField ) {
167- sorting . value . field = urlParams ? .sortField ;
177+ sorting . value . field = urlParams . sortField ;
168178 }
169179 if ( urlParams ?. sortOrder ) {
170- sorting . value . order = parseInt ( urlParams ?. sortOrder ) ? 1 : 0 ;
180+ sorting . value . order =
181+ ( parseInt ( urlParams . sortOrder ) as 0 | 1 | - 1 ) || null ;
182+ }
183+ if ( urlParams ?. page ) {
184+ pagination . value . page = parseInt ( urlParams . page ) ;
171185 }
172186 }
173187
0 commit comments