@@ -36,10 +36,11 @@ export const UserMenu = withPopover<UserMenuProps>((props) => {
36
36
const popover = usePopover ( ) ;
37
37
const { selected, onSelect } = props ;
38
38
const [ filter , setFilter ] = useState ( "" ) ;
39
+ const [ isHovered , setIsHovered ] = useState ( false ) ;
39
40
const debouncedFilter = useDebouncedValue ( filter , 300 ) ;
40
41
const usersQueryResult = useQuery ( {
41
42
...usersQuery ( { limit : 100 , q : debouncedFilter } ) ,
42
- enabled : popover . isOpen ,
43
+ enabled : popover . isOpen || isHovered ,
43
44
} ) ;
44
45
const { data : selectedUser } = useQuery ( {
45
46
queryKey : selectedUserKey ( selected ?? "" ) ,
@@ -57,6 +58,7 @@ export const UserMenu = withPopover<UserMenuProps>((props) => {
57
58
< MenuButton
58
59
aria-label = "Select user"
59
60
startIcon = { < span > { selectedOption ?. avatar } </ span > }
61
+ onMouseEnter = { ( ) => setIsHovered ( true ) }
60
62
>
61
63
{ selectedOption ? selectedOption . label : "All users" }
62
64
</ MenuButton >
@@ -92,7 +94,10 @@ export const UserMenu = withPopover<UserMenuProps>((props) => {
92
94
93
95
// This avoid the need to refetch the selected user query
94
96
// when the user is selected
95
- setSelectedUserQueryData ( user , queryClient ) ;
97
+ queryClient . setQueryData (
98
+ selectedUserKey ( user . email ) ,
99
+ user ,
100
+ ) ;
96
101
popover . setIsOpen ( false ) ;
97
102
onSelect ( option . value ) ;
98
103
} }
@@ -133,10 +138,6 @@ async function getSelectedUser(
133
138
return usersRes . users . at ( 0 ) ;
134
139
}
135
140
136
- function setSelectedUserQueryData ( user : User , queryClient : QueryClient ) {
137
- queryClient . setQueryData ( selectedUserKey ( user . email ) , user ) ;
138
- }
139
-
140
141
function optionFromUser ( user : User ) : UserOption {
141
142
return {
142
143
label : user . name ?? user . username ,
@@ -150,12 +151,12 @@ function optionFromUser(user: User): UserOption {
150
151
function mountOptions (
151
152
users : readonly User [ ] | undefined ,
152
153
selectedUser : User | undefined ,
153
- ) : UserOption [ ] | undefined {
154
+ ) : Readonly < UserOption > [ ] | undefined {
154
155
if ( ! users ) {
155
156
return undefined ;
156
157
}
157
158
158
- let usersToDisplay = [ ... users ] ;
159
+ let usersToDisplay = users ;
159
160
160
161
if ( selectedUser ) {
161
162
const usersIncludeSelectedUser = users . some (
0 commit comments