diff --git a/src/components/common/pickers/PickerItem.tsx b/src/components/common/pickers/PickerItem.tsx index 994665ef0..c3b7d9f59 100644 --- a/src/components/common/pickers/PickerItem.tsx +++ b/src/components/common/pickers/PickerItem.tsx @@ -57,6 +57,14 @@ const PickerItem = ({ onClick?.(); }); + const handleKeyDown = useLastCallback((e: React.KeyboardEvent) => { + if (e.key !== ' ') return; + + e.preventDefault(); + e.stopPropagation(); + handleClick(); + }); + return (
= ({ executeForward(); }); + const handleEnterShortcut = useLastCallback((e: KeyboardEvent) => { + if (e.isComposing || e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) { + return false; + } + + if (!selectedIds.length) { + if (!canCopyLink) return false; + + e.preventDefault(); + handleCopyLink(); + return undefined; + } + + e.preventDefault(); + handleForwardToMultiple(); + return undefined; + }); + + useEffect(() => { + if (!isOpen || !isMultiSelect || isPaymentConfirmOpen) { + return undefined; + } + + return captureKeyboardListeners({ onEnter: handleEnterShortcut }); + }, [isOpen, isMultiSelect, isPaymentConfirmOpen, handleEnterShortcut]); + const executeForward = useLastCallback(() => { const targets: ForwardTarget[] = selectedIds.map(({ peerId, topicId }) => ({ chatId: peerId,