@@ -13,12 +13,19 @@ import { useSearchParams } from '../SearchParams/index.js'
13
13
14
14
export type ColumnPreferences = Pick < Column , 'accessor' | 'active' > [ ]
15
15
16
- type Handlers = {
17
- handlePageChange ?: ( page : number ) => void
18
- handlePerPageChange ?: ( limit : number ) => void
19
- handleSearchChange ?: ( search : string ) => void
20
- handleSortChange ?: ( sort : string ) => void
21
- handleWhereChange ?: ( where : Where ) => void
16
+ type PropHandlers = {
17
+ handlePageChange ?: ( page : number ) => Promise < void > | void
18
+ handlePerPageChange ?: ( limit : number ) => Promise < void > | void
19
+ handleSearchChange ?: ( search : string ) => Promise < void > | void
20
+ handleSortChange ?: ( sort : string ) => Promise < void > | void
21
+ handleWhereChange ?: ( where : Where ) => Promise < void > | void
22
+ }
23
+ type ContextHandlers = {
24
+ handlePageChange ?: ( page : number ) => Promise < void >
25
+ handlePerPageChange ?: ( limit : number ) => Promise < void >
26
+ handleSearchChange ?: ( search : string ) => Promise < void >
27
+ handleSortChange ?: ( sort : string ) => Promise < void >
28
+ handleWhereChange ?: ( where : Where ) => Promise < void >
22
29
}
23
30
24
31
export type ListQueryProps = {
@@ -28,14 +35,14 @@ export type ListQueryProps = {
28
35
defaultSort ?: string
29
36
modifySearchParams ?: boolean
30
37
preferenceKey ?: string
31
- } & Handlers
38
+ } & PropHandlers
32
39
33
40
export type ListQueryContext = {
34
41
data : PaginatedDocs
35
42
defaultLimit ?: number
36
43
defaultSort ?: string
37
- refineListData : ( args : RefineOverrides ) => void
38
- } & Handlers
44
+ refineListData : ( args : RefineOverrides ) => Promise < void >
45
+ } & ContextHandlers
39
46
40
47
const Context = createContext ( { } as ListQueryContext )
41
48
@@ -71,6 +78,9 @@ export const ListQueryProvider: React.FC<ListQueryProps> = ({
71
78
async ( query : RefineOverrides ) => {
72
79
if ( ! modifySearchParams ) return
73
80
81
+ let pageQuery = 'page' in query ? query . page : currentQuery ?. page
82
+ if ( 'where' in query || 'search' in query ) pageQuery = '1'
83
+
74
84
const updatedPreferences : Record < string , unknown > = { }
75
85
let updatePreferences = false
76
86
@@ -88,7 +98,7 @@ export const ListQueryProvider: React.FC<ListQueryProps> = ({
88
98
89
99
const params = {
90
100
limit : 'limit' in query ? query . limit : currentQuery ?. limit ,
91
- page : 'page' in query ? query . page : currentQuery ?. page ,
101
+ page : pageQuery ,
92
102
search : 'search' in query ? query . search : currentQuery ?. search ,
93
103
sort : 'sort' in query ? query . sort : currentQuery ?. sort ,
94
104
where : 'where' in query ? query . where : currentQuery ?. where ,
@@ -102,7 +112,7 @@ export const ListQueryProvider: React.FC<ListQueryProps> = ({
102
112
const handlePageChange = React . useCallback (
103
113
async ( arg : number ) => {
104
114
if ( typeof handlePageChangeFromProps === 'function' ) {
105
- handlePageChangeFromProps ( arg )
115
+ await handlePageChangeFromProps ( arg )
106
116
}
107
117
await refineListData ( { page : String ( arg ) } )
108
118
} ,
@@ -111,7 +121,7 @@ export const ListQueryProvider: React.FC<ListQueryProps> = ({
111
121
const handlePerPageChange = React . useCallback (
112
122
async ( arg : number ) => {
113
123
if ( typeof handlePerPageChangeFromProps === 'function' ) {
114
- handlePerPageChangeFromProps ( arg )
124
+ await handlePerPageChangeFromProps ( arg )
115
125
}
116
126
await refineListData ( { limit : String ( arg ) } )
117
127
} ,
@@ -120,7 +130,7 @@ export const ListQueryProvider: React.FC<ListQueryProps> = ({
120
130
const handleSearchChange = React . useCallback (
121
131
async ( arg : string ) => {
122
132
if ( typeof handleSearchChangeFromProps === 'function' ) {
123
- handleSearchChangeFromProps ( arg )
133
+ await handleSearchChangeFromProps ( arg )
124
134
}
125
135
await refineListData ( { search : arg } )
126
136
} ,
@@ -129,7 +139,7 @@ export const ListQueryProvider: React.FC<ListQueryProps> = ({
129
139
const handleSortChange = React . useCallback (
130
140
async ( arg : string ) => {
131
141
if ( typeof handleSortChangeFromProps === 'function' ) {
132
- handleSortChangeFromProps ( arg )
142
+ await handleSortChangeFromProps ( arg )
133
143
}
134
144
await refineListData ( { sort : arg } )
135
145
} ,
@@ -138,7 +148,7 @@ export const ListQueryProvider: React.FC<ListQueryProps> = ({
138
148
const handleWhereChange = React . useCallback (
139
149
async ( arg : Where ) => {
140
150
if ( typeof handleWhereChangeFromProps === 'function' ) {
141
- handleWhereChangeFromProps ( arg )
151
+ await handleWhereChangeFromProps ( arg )
142
152
}
143
153
await refineListData ( { where : arg } )
144
154
} ,
0 commit comments