feat: escape when submenu is open should close it instead of entire menu

This commit is contained in:
Antonella Sgarlatta
2021-05-07 18:08:22 -03:00
parent dd5873b513
commit 660525dc18
3 changed files with 29 additions and 12 deletions

View File

@@ -24,6 +24,11 @@ export const NotesOptionsPanel = observer(({ appState }: Props) => {
const buttonRef = useRef<HTMLButtonElement>();
const panelRef = useRef<HTMLDivElement>();
const [closeOnBlur, setLockCloseOnBlur] = useCloseOnBlur(panelRef, setOpen);
const [submenuOpen, setSubmenuOpen] = useState(false);
const onSubmenuChange = (open: boolean) => {
setSubmenuOpen(open);
};
return (
<Disclosure
@@ -39,7 +44,7 @@ export const NotesOptionsPanel = observer(({ appState }: Props) => {
>
<DisclosureButton
onKeyUp={(event) => {
if (event.key === 'Escape') {
if (event.key === 'Escape' && !submenuOpen) {
setOpen(false);
}
}}
@@ -56,7 +61,7 @@ export const NotesOptionsPanel = observer(({ appState }: Props) => {
</DisclosureButton>
<DisclosurePanel
onKeyUp={(event) => {
if (event.key === 'Escape') {
if (event.key === 'Escape' && !submenuOpen) {
setOpen(false);
buttonRef.current.focus();
}
@@ -72,6 +77,7 @@ export const NotesOptionsPanel = observer(({ appState }: Props) => {
appState={appState}
closeOnBlur={closeOnBlur}
setLockCloseOnBlur={setLockCloseOnBlur}
onSubmenuChange={onSubmenuChange}
/>
)}
</DisclosurePanel>