Add Command key detection logic for Mac

This commit is contained in:
IRBorisov 2024-05-22 12:18:05 +03:00
parent cfd886e107
commit 291ded8286
10 changed files with 16 additions and 15 deletions

View File

@ -17,10 +17,11 @@ function Navigation() {
const router = useConceptNavigation(); const router = useConceptNavigation();
const { noNavigationAnimation } = useConceptOptions(); const { noNavigationAnimation } = useConceptOptions();
const navigateHome = (event: CProps.EventMouse) => router.push(urls.home, event.ctrlKey); const navigateHome = (event: CProps.EventMouse) => router.push(urls.home, event.ctrlKey || event.metaKey);
const navigateLibrary = (event: CProps.EventMouse) => router.push(urls.library, event.ctrlKey); const navigateLibrary = (event: CProps.EventMouse) => router.push(urls.library, event.ctrlKey || event.metaKey);
const navigateHelp = (event: CProps.EventMouse) => router.push(urls.manuals, event.ctrlKey); const navigateHelp = (event: CProps.EventMouse) => router.push(urls.manuals, event.ctrlKey || event.metaKey);
const navigateCreateNew = (event: CProps.EventMouse) => router.push(urls.create_schema, event.ctrlKey); const navigateCreateNew = (event: CProps.EventMouse) =>
router.push(urls.create_schema, event.ctrlKey || event.metaKey);
return ( return (
<nav <nav

View File

@ -30,7 +30,7 @@ function UserDropdown({ isOpen, hideDropdown }: UserDropdownProps) {
function navigateProfile(event: CProps.EventMouse) { function navigateProfile(event: CProps.EventMouse) {
hideDropdown(); hideDropdown();
router.push(urls.profile, event.ctrlKey); router.push(urls.profile, event.ctrlKey || event.metaKey);
} }
function logoutAndRedirect() { function logoutAndRedirect() {

View File

@ -106,7 +106,7 @@ const RSInput = forwardRef<ReactCodeMirrorRef, RSInputProps>(
return; return;
} }
const text = new RSTextWrapper(thisRef.current as Required<ReactCodeMirrorRef>); const text = new RSTextWrapper(thisRef.current as Required<ReactCodeMirrorRef>);
if (event.ctrlKey && event.code === 'Space') { if ((event.ctrlKey || event.metaKey) && event.code === 'Space') {
const selection = text.getSelection(); const selection = text.getSelection();
if (!selection.empty || !schema) { if (!selection.empty || !schema) {
return; return;
@ -126,14 +126,14 @@ const RSInput = forwardRef<ReactCodeMirrorRef, RSInputProps>(
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
} }
} else if (!event.ctrlKey) { } else if (!(event.ctrlKey || event.metaKey)) {
const newSymbol = getSymbolSubstitute(event.code, event.shiftKey); const newSymbol = getSymbolSubstitute(event.code, event.shiftKey);
if (newSymbol) { if (newSymbol) {
text.replaceWith(newSymbol); text.replaceWith(newSymbol);
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
} }
} else if (event.ctrlKey && event.code === 'KeyQ' && onAnalyze) { } else if (event.code === 'KeyQ' && onAnalyze) {
onAnalyze(); onAnalyze();
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();

View File

@ -139,7 +139,7 @@ const RefsInput = forwardRef<ReactCodeMirrorRef, RefsInputInputProps>(
event.preventDefault(); event.preventDefault();
return; return;
} }
if (event.ctrlKey && event.code === 'Space') { if ((event.ctrlKey || event.metaKey) && event.code === 'Space') {
const wrap = new CodeMirrorWrapper(thisRef.current as Required<ReactCodeMirrorRef>); const wrap = new CodeMirrorWrapper(thisRef.current as Required<ReactCodeMirrorRef>);
wrap.fixSelection(ReferenceTokens); wrap.fixSelection(ReferenceTokens);
const nodes = wrap.getEnvelopingNodes(ReferenceTokens); const nodes = wrap.getEnvelopingNodes(ReferenceTokens);

View File

@ -36,7 +36,7 @@ function ViewLibrary({ items, resetQuery }: ViewLibraryProps) {
const [itemsPerPage, setItemsPerPage] = useLocalStorage<number>(storage.libraryPagination, 50); const [itemsPerPage, setItemsPerPage] = useLocalStorage<number>(storage.libraryPagination, 50);
function handleOpenItem(item: ILibraryItem, event: CProps.EventMouse) { function handleOpenItem(item: ILibraryItem, event: CProps.EventMouse) {
router.push(urls.schema(item.id), event.ctrlKey); router.push(urls.schema(item.id), event.ctrlKey || event.metaKey);
} }
const windowSize = useWindowSize(); const windowSize = useWindowSize();

View File

@ -42,7 +42,7 @@ function EditorConstituenta({ activeCst, isModified, setIsModified, onOpenEdit }
if (disabled) { if (disabled) {
return; return;
} }
if (event.ctrlKey && event.code === 'KeyS') { if ((event.ctrlKey || event.metaKey) && event.code === 'KeyS') {
if (isModified) { if (isModified) {
initiateSubmit(); initiateSubmit();
} }

View File

@ -32,7 +32,7 @@ function EditorRSForm({ isModified, onDestroy, setIsModified }: EditorRSFormProp
} }
function handleInput(event: React.KeyboardEvent<HTMLDivElement>) { function handleInput(event: React.KeyboardEvent<HTMLDivElement>) {
if (event.ctrlKey && event.code === 'KeyS') { if ((event.ctrlKey || event.metaKey) && event.code === 'KeyS') {
if (isModified) { if (isModified) {
initiateSubmit(); initiateSubmit();
} }

View File

@ -80,7 +80,7 @@ function TermGraph({
const handleNodeClick = useCallback( const handleNodeClick = useCallback(
(node: GraphNode, _?: CollapseProps, event?: GraphMouseEvent) => { (node: GraphNode, _?: CollapseProps, event?: GraphMouseEvent) => {
if (event?.ctrlKey) { if (event?.ctrlKey || event?.metaKey) {
onSelectCentral(Number(node.id)); onSelectCentral(Number(node.id));
} else if (selections.includes(node.id)) { } else if (selections.includes(node.id)) {
onDeselect(Number(node.id)); onDeselect(Number(node.id));

View File

@ -37,7 +37,7 @@ function ViewHidden({ items, selected, toggleSelection, setFocus, schema, colori
const handleClick = useCallback( const handleClick = useCallback(
(cstID: ConstituentaID, event: CProps.EventMouse) => { (cstID: ConstituentaID, event: CProps.EventMouse) => {
if (event.ctrlKey) { if (event.ctrlKey || event.metaKey) {
setFocus(cstID); setFocus(cstID);
} else { } else {
toggleSelection(cstID); toggleSelection(cstID);

View File

@ -268,7 +268,7 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
hideTitle={accessMenu.isOpen} hideTitle={accessMenu.isOpen}
className='h-full px-2' className='h-full px-2'
icon={<IconArchive size='1.25rem' className='icon-primary' />} icon={<IconArchive size='1.25rem' className='icon-primary' />}
onClick={event => controller.viewVersion(undefined, event.ctrlKey)} onClick={event => controller.viewVersion(undefined, event.ctrlKey || event.metaKey)}
/> />
) : null} ) : null}