File tree Expand file tree Collapse file tree 2 files changed +37
-3
lines changed
packages/core/useMagicKeys Expand file tree Collapse file tree 2 files changed +37
-3
lines changed Original file line number Diff line number Diff line change @@ -63,4 +63,34 @@ describe('useMagicKeys', () => {
63
63
} ) )
64
64
expect ( Ctrl_Shift_Period . value ) . toBe ( true )
65
65
} )
66
+ it ( 'prevent incorrect clearing of other keys after releasing shift' , async ( ) => {
67
+ const { v, u, e, shift } = useMagicKeys ( { target } )
68
+
69
+ target . dispatchEvent ( new KeyboardEvent ( 'keydown' , {
70
+ key : 'v' ,
71
+ } ) )
72
+ target . dispatchEvent ( new KeyboardEvent ( 'keydown' , {
73
+ key : 'u' ,
74
+ } ) )
75
+ target . dispatchEvent ( new KeyboardEvent ( 'keydown' , {
76
+ key : 'e' ,
77
+ } ) )
78
+ target . dispatchEvent ( new KeyboardEvent ( 'keydown' , {
79
+ key : 'shift' ,
80
+ } ) )
81
+
82
+ expect ( v . value ) . toBe ( true )
83
+ expect ( u . value ) . toBe ( true )
84
+ expect ( e . value ) . toBe ( true )
85
+ expect ( shift . value ) . toBe ( true )
86
+
87
+ target . dispatchEvent ( new KeyboardEvent ( 'keyup' , {
88
+ key : 'shift' ,
89
+ } ) )
90
+
91
+ expect ( v . value ) . toBe ( true )
92
+ expect ( u . value ) . toBe ( true )
93
+ expect ( e . value ) . toBe ( true )
94
+ expect ( shift . value ) . toBe ( false )
95
+ } )
66
96
} )
Original file line number Diff line number Diff line change @@ -121,9 +121,13 @@ export function useMagicKeys(options: UseMagicKeysOptions<boolean> = {}): any {
121
121
setRefs ( key , value )
122
122
}
123
123
if ( key === 'shift' && ! value ) {
124
- shiftDeps . forEach ( ( key ) => {
125
- current . delete ( key )
126
- setRefs ( key , false )
124
+ const shiftDepsArray = Array . from ( shiftDeps )
125
+ const shiftIndex = shiftDepsArray . indexOf ( 'shift' )
126
+ shiftDepsArray . forEach ( ( key , index ) => {
127
+ if ( index >= shiftIndex ) {
128
+ current . delete ( key )
129
+ setRefs ( key , false )
130
+ }
127
131
} )
128
132
shiftDeps . clear ( )
129
133
}
You can’t perform that action at this time.
0 commit comments