diff --git a/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx b/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx index 1900e4d32..42a49c447 100644 --- a/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx +++ b/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx @@ -25,6 +25,7 @@ import PermissionsModalWrapper from '@/Components/PermissionsModal/PermissionsMo import { PanelResizedData } from '@/Types/PanelResizedData' import TagContextMenuWrapper from '@/Components/Tags/TagContextMenuWrapper' import FileDragNDropProvider from '../FileDragNDropProvider/FileDragNDropProvider' +import ResponsivePaneProvider from '../ResponsivePane/ResponsivePaneProvider' type Props = { application: WebApplication @@ -182,19 +183,21 @@ const ApplicationView: FunctionComponent = ({ application, mainApplicatio featuresController={viewControllerManager.featuresController} filesController={viewControllerManager.filesController} > - - - + + + + + diff --git a/packages/web/src/javascripts/Components/ContentListView/ContentListView.tsx b/packages/web/src/javascripts/Components/ContentListView/ContentListView.tsx index 5cbbae86e..2b747194c 100644 --- a/packages/web/src/javascripts/Components/ContentListView/ContentListView.tsx +++ b/packages/web/src/javascripts/Components/ContentListView/ContentListView.tsx @@ -17,6 +17,8 @@ import { NotesController } from '@/Controllers/NotesController' import { AccountMenuController } from '@/Controllers/AccountMenu/AccountMenuController' import { ElementIds } from '@/Constants/ElementIDs' import ContentListHeader from './Header/ContentListHeader' +import ResponsivePaneContent from '../ResponsivePane/ResponsivePaneContent' +import { AppPaneId } from '../ResponsivePane/AppPaneMetadata' type Props = { accountMenuController: AccountMenuController @@ -168,11 +170,11 @@ const ContentListView: FunctionComponent = ({ return (
-
+
= ({ selectionController={selectionController} /> ) : null} -
+ {itemsViewPanelRef.current && ( = ({ application, @@ -20,6 +22,8 @@ const FileListItem: FunctionComponent = ({ sortBy, tags, }) => { + const { toggleAppPane } = useResponsiveAppPane() + const openFileContextMenu = useCallback( (posX: number, posY: number) => { filesController.setFileContextMenuLocation({ @@ -41,9 +45,12 @@ const FileListItem: FunctionComponent = ({ [selectionController, item.uuid, openFileContextMenu], ) - const onClick = useCallback(() => { - void selectionController.selectItem(item.uuid, true) - }, [item.uuid, selectionController]) + const onClick = useCallback(async () => { + const { didSelect } = await selectionController.selectItem(item.uuid, true) + if (didSelect) { + toggleAppPane(AppPaneId.Editor) + } + }, [item.uuid, selectionController, toggleAppPane]) const IconComponent = () => getFileIconComponent( diff --git a/packages/web/src/javascripts/Components/ContentListView/NoteListItem.tsx b/packages/web/src/javascripts/Components/ContentListView/NoteListItem.tsx index 45c9adf35..75a366f16 100644 --- a/packages/web/src/javascripts/Components/ContentListView/NoteListItem.tsx +++ b/packages/web/src/javascripts/Components/ContentListView/NoteListItem.tsx @@ -1,13 +1,15 @@ import { PLAIN_EDITOR_NAME } from '@/Constants/Constants' import { sanitizeHtmlString, SNNote } from '@standardnotes/snjs' import { observer } from 'mobx-react-lite' -import { FunctionComponent } from 'react' +import { FunctionComponent, useCallback } from 'react' import Icon from '@/Components/Icon/Icon' import ListItemConflictIndicator from './ListItemConflictIndicator' import ListItemFlagIcons from './ListItemFlagIcons' import ListItemTags from './ListItemTags' import ListItemMetadata from './ListItemMetadata' import { DisplayableListItemProps } from './Types/DisplayableListItemProps' +import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider' +import { AppPaneId } from '../ResponsivePane/AppPaneMetadata' const NoteListItem: FunctionComponent = ({ application, @@ -22,6 +24,8 @@ const NoteListItem: FunctionComponent = ({ sortBy, tags, }) => { + const { toggleAppPane } = useResponsiveAppPane() + const editorForNote = application.componentManager.editorForNote(item as SNNote) const editorName = editorForNote?.name ?? PLAIN_EDITOR_NAME const [icon, tint] = application.iconsController.getIconAndTintForNoteType(editorForNote?.package_info.note_type) @@ -43,15 +47,20 @@ const NoteListItem: FunctionComponent = ({ } } + const onClick = useCallback(async () => { + const { didSelect } = await selectionController.selectItem(item.uuid, true) + if (didSelect) { + toggleAppPane(AppPaneId.Editor) + } + }, [item.uuid, selectionController, toggleAppPane]) + return (
{ - void selectionController.selectItem(item.uuid, true) - }} + onClick={onClick} onContextMenu={(event) => { event.preventDefault() void openContextMenu(event.clientX, event.clientY) diff --git a/packages/web/src/javascripts/Components/Navigation/Navigation.tsx b/packages/web/src/javascripts/Components/Navigation/Navigation.tsx index 563ed371f..6d5112b97 100644 --- a/packages/web/src/javascripts/Components/Navigation/Navigation.tsx +++ b/packages/web/src/javascripts/Components/Navigation/Navigation.tsx @@ -4,9 +4,11 @@ import { WebApplication } from '@/Application/Application' import { PANEL_NAME_NAVIGATION } from '@/Constants/Constants' import { ApplicationEvent, PrefKey } from '@standardnotes/snjs' import { observer } from 'mobx-react-lite' -import { FunctionComponent, useCallback, useEffect, useMemo, useState } from 'react' +import { FunctionComponent, useCallback, useEffect, useMemo, useRef, useState } from 'react' import PanelResizer, { PanelSide, ResizeFinishCallback, PanelResizeType } from '@/Components/PanelResizer/PanelResizer' import SearchBar from '@/Components/SearchBar/SearchBar' +import ResponsivePaneContent from '@/Components/ResponsivePane/ResponsivePaneContent' +import { AppPaneId } from '@/Components/ResponsivePane/AppPaneMetadata' type Props = { application: WebApplication @@ -14,7 +16,7 @@ type Props = { const Navigation: FunctionComponent = ({ application }) => { const viewControllerManager = useMemo(() => application.getViewControllerManager(), [application]) - const [ref, setRef] = useState() + const ref = useRef(null) const [panelWidth, setPanelWidth] = useState(0) useEffect(() => { @@ -44,13 +46,8 @@ const Navigation: FunctionComponent = ({ application }) => { }, [viewControllerManager]) return ( -