@@ -23,7 +23,7 @@ import { IS_PLATFORM_MAC_OS } from '@Common/Constants'
23
23
import { SupportedKeyboardKeysType } from '@Common/Hooks/UseRegisterShortcut/types'
24
24
import SelectPicker from './SelectPicker.component'
25
25
import { FilterSelectPickerProps , SelectPickerOptionType , SelectPickerProps } from './type'
26
- import { Button } from '../Button'
26
+ import { Button , ButtonProps , useTriggerAutoClickTimestamp } from '../Button'
27
27
28
28
const APPLY_FILTER_SHORTCUT_KEYS : SupportedKeyboardKeysType [ ] = [ IS_PLATFORM_MAC_OS ? 'Meta' : 'Control' , 'Enter' ]
29
29
@@ -34,6 +34,8 @@ const FilterSelectPicker = ({
34
34
...props
35
35
} : FilterSelectPickerProps ) => {
36
36
const [ isMenuOpen , setIsMenuOpen ] = useState ( false )
37
+ const { triggerAutoClickTimestamp, setTriggerAutoClickTimestampToNow, resetTriggerAutoClickTimestamp } =
38
+ useTriggerAutoClickTimestamp ( )
37
39
38
40
const [ selectedOptions , setSelectedOptions ] = useState < SelectPickerOptionType [ ] > (
39
41
structuredClone ( appliedFilterOptions ?? [ ] ) ,
@@ -57,10 +59,12 @@ const FilterSelectPicker = ({
57
59
}
58
60
59
61
const closeMenu = ( ) => {
62
+ resetTriggerAutoClickTimestamp ( )
60
63
setIsMenuOpen ( false )
61
64
}
62
65
63
66
const handleSelectOnChange : SelectPickerProps < number | string , true > [ 'onChange' ] = ( selectedOptionsToUpdate ) => {
67
+ setTriggerAutoClickTimestampToNow ( )
64
68
setSelectedOptions ( structuredClone ( selectedOptionsToUpdate ) as SelectPickerOptionType [ ] )
65
69
}
66
70
@@ -69,9 +73,15 @@ const FilterSelectPicker = ({
69
73
setSelectedOptions ( structuredClone ( appliedFilterOptions ?? [ ] ) )
70
74
}
71
75
72
- const handleApplyClick = ( ) => {
76
+ const handleApplyClick : ButtonProps [ 'onClick' ] = ( e ) => {
73
77
handleApplyFilter ( selectedOptions )
74
- closeMenu ( )
78
+ resetTriggerAutoClickTimestamp ( )
79
+
80
+ // If true, depicts the click event is triggered by the user
81
+ // Added !e to ensure it works for both click and keyboard shortcut event
82
+ if ( ! e || e . isTrusted ) {
83
+ closeMenu ( )
84
+ }
75
85
}
76
86
77
87
const renderApplyButton = ( ) => (
@@ -89,13 +99,14 @@ const FilterSelectPicker = ({
89
99
combo : APPLY_FILTER_SHORTCUT_KEYS ,
90
100
} ,
91
101
} }
102
+ triggerAutoClickTimestamp = { triggerAutoClickTimestamp }
92
103
/>
93
104
</ div >
94
105
)
95
106
96
107
useEffect ( ( ) => {
97
108
if ( isMenuOpen ) {
98
- registerShortcut ( { keys : APPLY_FILTER_SHORTCUT_KEYS , callback : handleApplyClick } )
109
+ registerShortcut ( { keys : APPLY_FILTER_SHORTCUT_KEYS , callback : handleApplyClick as ( ) => void } )
99
110
}
100
111
101
112
return ( ) => {
0 commit comments