Skip to content

Commit

Permalink
refactor(form): use global keyDown hook for Image action menu
Browse files Browse the repository at this point in the history
  • Loading branch information
skogsmaskin committed Aug 11, 2022
1 parent a7b66d7 commit 3cdbdbf
Showing 1 changed file with 9 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, {MouseEventHandler, ReactNode, useCallback, useState} from 'react'

import {EllipsisVerticalIcon, CropIcon} from '@sanity/icons'
import {Menu, Popover, useClickOutside} from '@sanity/ui'
import {Menu, Popover, useClickOutside, useGlobalKeyDown} from '@sanity/ui'
import {MenuActionsWrapper, ButtonContainer} from './ImageActionsMenu.styled'

interface Props {
Expand All @@ -19,12 +19,11 @@ export function ImageActionsMenu(props: Props) {

const handleClick = React.useCallback(() => onMenuOpen(true), [onMenuOpen])

useClickOutside(
React.useCallback(() => onMenuOpen(false), [onMenuOpen]),
[menuElement]
)
const handleClickOutside = useCallback(() => {
onMenuOpen(false)
}, [onMenuOpen])

const handleKeyDown = useCallback(
const handleGlobalKeyDown = useCallback(
(e) => {
if (e.key === 'Escape') {
onMenuOpen(false)
Expand All @@ -34,6 +33,9 @@ export function ImageActionsMenu(props: Props) {
[menuButtonRef, onMenuOpen]
)

useClickOutside(handleClickOutside, [menuElement])
useGlobalKeyDown(handleGlobalKeyDown)

return (
<MenuActionsWrapper data-buttons space={1} padding={2}>
{showEdit && (
Expand All @@ -46,7 +48,7 @@ export function ImageActionsMenu(props: Props) {
)}
<Popover
content={
<Menu ref={setMenuRef} shouldFocus="first" onKeyDown={handleKeyDown}>
<Menu ref={setMenuRef} shouldFocus="first">
{children}
</Menu>
}
Expand Down

0 comments on commit 3cdbdbf

Please sign in to comment.