diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx index 8ae277dc68..2b53ddd95f 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx @@ -84,6 +84,11 @@ export const CreateLinkButton = () => { }; }, }); + useEffect(() => { + if (state?.url === undefined) { + setShowPopover(false); + } + }, [state?.url]); // Makes Ctrl+K/Meta+K open link creation popover. useEffect(() => { @@ -107,7 +112,10 @@ export const CreateLinkButton = () => { } return ( - + {/* TODO: hide tooltip on click */} { dict.generic.ctrl_shortcut, )} icon={} - onClick={() => setShowPopover(true)} + onClick={() => setShowPopover((open) => !open)} /> ( items: Item[], - onItemClick?: (item: Item) => void + onItemClick?: (item: Item) => void, ) { const [selectedIndex, setSelectedIndex] = useState(0); @@ -23,7 +23,6 @@ export function useSuggestionMenuKeyboardHandler( } if (event.key === "ArrowDown") { - // debugger; event.preventDefault(); if (items.length) { @@ -33,6 +32,26 @@ export function useSuggestionMenuKeyboardHandler( return true; } + if (event.key === "PageUp") { + event.preventDefault(); + + if (items.length) { + setSelectedIndex(0); + } + + return true; + } + + if (event.key === "PageDown") { + event.preventDefault(); + + if (items.length) { + setSelectedIndex(items.length - 1); + } + + return true; + } + const isComposing = isReactEvent(event) ? event.nativeEvent.isComposing : event.isComposing; @@ -53,7 +72,7 @@ export function useSuggestionMenuKeyboardHandler( } function isReactEvent( - event: KeyboardEvent | React.KeyboardEvent + event: KeyboardEvent | React.KeyboardEvent, ): event is React.KeyboardEvent { return (event as React.KeyboardEvent).nativeEvent !== undefined; }