530a18558b
Closes twentyhq/core-team-issues#53 - Removes command menu top bar text input when the user is not on root page - Fixes bug when resetting command menu context - Added animations on command menu open and close - Refactored workflow visualizer code to remove unnecessary rerenders and props drilling https://github.com/user-attachments/assets/1da3adb8-220b-407b-9279-30354d3100d3
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { CommandMenuPages } from '@/command-menu/components/CommandMenuPages';
|
|
import { useCommandMenu } from '@/command-menu/hooks/useCommandMenu';
|
|
import { commandMenuPageState } from '@/command-menu/states/commandMenuPageState';
|
|
import { commandMenuSearchState } from '@/command-menu/states/commandMenuSearchState';
|
|
import { useKeyboardShortcutMenu } from '@/keyboard-shortcut-menu/hooks/useKeyboardShortcutMenu';
|
|
import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys';
|
|
import { AppHotkeyScope } from '@/ui/utilities/hotkey/types/AppHotkeyScope';
|
|
import { isNonEmptyString } from '@sniptt/guards';
|
|
import { useRecoilValue } from 'recoil';
|
|
import { Key } from 'ts-key-enum';
|
|
|
|
export const useCommandMenuHotKeys = () => {
|
|
const { closeCommandMenu, toggleCommandMenu, resetCommandMenuContext } =
|
|
useCommandMenu();
|
|
|
|
const commandMenuSearch = useRecoilValue(commandMenuSearchState);
|
|
|
|
const { closeKeyboardShortcutMenu } = useKeyboardShortcutMenu();
|
|
|
|
const commandMenuPage = useRecoilValue(commandMenuPageState);
|
|
|
|
useScopedHotkeys(
|
|
'ctrl+k,meta+k',
|
|
() => {
|
|
closeKeyboardShortcutMenu();
|
|
toggleCommandMenu();
|
|
},
|
|
AppHotkeyScope.CommandMenu,
|
|
[toggleCommandMenu],
|
|
);
|
|
|
|
useScopedHotkeys(
|
|
[Key.Escape],
|
|
() => {
|
|
closeCommandMenu();
|
|
},
|
|
AppHotkeyScope.CommandMenuOpen,
|
|
[closeCommandMenu],
|
|
);
|
|
|
|
useScopedHotkeys(
|
|
[Key.Backspace, Key.Delete],
|
|
() => {
|
|
if (
|
|
commandMenuPage === CommandMenuPages.Root &&
|
|
!isNonEmptyString(commandMenuSearch)
|
|
) {
|
|
resetCommandMenuContext();
|
|
}
|
|
},
|
|
AppHotkeyScope.CommandMenuOpen,
|
|
[closeCommandMenu],
|
|
{
|
|
preventDefault: false,
|
|
},
|
|
);
|
|
};
|