File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2121 persist-credentials : false
2222 - uses : millionco/react-doctor@0b4f4f4bd248a154e64eb508a48347f71154b3f3
2323 with :
24- github-token : ${{ secrets.GITHUB_TOKEN }}
24+ version : 0.7.4
Original file line number Diff line number Diff line change @@ -322,7 +322,8 @@ export function generateTrigger(
322322 popupVisible ,
323323 ) ;
324324
325- const mergedOpen = ( internalOpen || false ) && ! disabled ;
325+ const rawOpen = internalOpen || false ;
326+ const mergedOpen = rawOpen && ! disabled ;
326327
327328 // ========================== Children ==========================
328329 const child = React . useMemo ( ( ) => {
@@ -387,7 +388,7 @@ export function generateTrigger(
387388
388389 const internalTriggerOpen = useEvent ( ( nextOpen : boolean ) => {
389390 flushSync ( ( ) => {
390- if ( mergedOpen !== nextOpen ) {
391+ if ( rawOpen !== nextOpen ) {
391392 setInternalOpen ( nextOpen ) ;
392393 onOpenChange ?.( nextOpen ) ;
393394 onPopupVisibleChange ?.( nextOpen ) ;
Original file line number Diff line number Diff line change @@ -208,6 +208,35 @@ describe('Trigger.Basic', () => {
208208 expect ( isPopupHidden ( ) ) . toBeFalsy ( ) ;
209209 expect ( onOpenChange ) . not . toHaveBeenCalled ( ) ;
210210 } ) ;
211+
212+ it ( 'updates open state when mouse leaves while disabled' , ( ) => {
213+ const onOpenChange = jest . fn ( ) ;
214+ const Demo = ( { disabled = false } ) => (
215+ < Trigger
216+ action = { [ 'hover' ] }
217+ disabled = { disabled }
218+ onOpenChange = { onOpenChange }
219+ popup = { < strong > trigger</ strong > }
220+ >
221+ < div className = "target" > hover</ div >
222+ </ Trigger >
223+ ) ;
224+
225+ const { container, rerender } = render ( < Demo /> ) ;
226+
227+ trigger ( container , '.target' , 'mouseEnter' ) ;
228+ expect ( isPopupHidden ( ) ) . toBeFalsy ( ) ;
229+ onOpenChange . mockReset ( ) ;
230+
231+ rerender ( < Demo disabled /> ) ;
232+ expect ( isPopupHidden ( ) ) . toBeTruthy ( ) ;
233+
234+ trigger ( container , '.target' , 'mouseLeave' ) ;
235+ expect ( onOpenChange ) . toHaveBeenCalledWith ( false ) ;
236+
237+ rerender ( < Demo /> ) ;
238+ expect ( isPopupHidden ( ) ) . toBeTruthy ( ) ;
239+ } ) ;
211240 } ) ;
212241
213242 it ( 'contextMenu works' , ( ) => {
You can’t perform that action at this time.
0 commit comments