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 { noNavigationAnimation } = useConceptOptions();
const navigateHome = (event: CProps.EventMouse) => router.push(urls.home, event.ctrlKey);
const navigateLibrary = (event: CProps.EventMouse) => router.push(urls.library, event.ctrlKey);
const navigateHelp = (event: CProps.EventMouse) => router.push(urls.manuals, event.ctrlKey);
const navigateCreateNew = (event: CProps.EventMouse) => router.push(urls.create_schema, 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 || event.metaKey);
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 || event.metaKey);
return (
<nav

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -268,7 +268,7 @@ function RSTabsMenu({ onDestroy }: RSTabsMenuProps) {
hideTitle={accessMenu.isOpen}
className='h-full px-2'
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}