@@ -20,24 +20,27 @@ interface SortState {
20
20
}
21
21
22
22
export function usePaginatedData (
23
- defaultFilters : PrimeVue . PaginatedDataFilters = { } ,
23
+ initialFilters : PrimeVue . PaginatedDataFilters = { } ,
24
24
only : string [ ] = [ 'request' ] ,
25
25
initialsRows : number = 20
26
26
) {
27
+ const defaultFilters = initialFilters ;
28
+ const defaultRows = initialsRows ;
29
+
27
30
const page = usePage < {
28
31
request : {
29
32
urlParams : PrimeVue . PaginatedDataUrlParams ;
30
33
} ;
31
34
} > ( ) ;
32
35
33
36
const processing = ref < boolean > ( false ) ;
34
- const filters = ref < PrimeVue . PaginatedDataFilters > ( defaultFilters ) ;
37
+ const filters = ref < PrimeVue . PaginatedDataFilters > ( initialFilters ) ;
35
38
const sorting = ref < SortState > ( {
36
39
field : '' ,
37
40
order : 1 ,
38
41
} ) ;
39
42
const pagination = ref < PaginationState > ( {
40
- page : parseInt ( page . props . request . urlParams ?. page ?? '1' ) ,
43
+ page : 1 ,
41
44
rows : initialsRows ,
42
45
} ) ;
43
46
@@ -108,16 +111,23 @@ export function usePaginatedData(
108
111
}
109
112
110
113
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
+ } ) ;
112
120
sorting . value = {
113
121
field : '' ,
114
122
order : 1 ,
115
123
} ;
116
124
pagination . value = {
117
125
page : 1 ,
118
- rows : initialsRows ,
126
+ rows : defaultRows ,
119
127
} ;
120
- fetchData ( ) ;
128
+ fetchData ( ) . then ( ( ) => {
129
+ window . history . replaceState ( null , '' , window . location . pathname ) ;
130
+ } ) ;
121
131
}
122
132
123
133
function parseUrlFilterValues ( ) {
@@ -164,10 +174,14 @@ export function usePaginatedData(
164
174
} ;
165
175
parseUrlFilterValues ( ) ;
166
176
if ( urlParams ?. sortField ) {
167
- sorting . value . field = urlParams ? .sortField ;
177
+ sorting . value . field = urlParams . sortField ;
168
178
}
169
179
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 ) ;
171
185
}
172
186
}
173
187
0 commit comments