feat(electron): new tab/split view entries (#7708)

fix AF-1146
This commit is contained in:
pengx17
2024-08-05 05:37:50 +00:00
parent bd31c8388c
commit 51ca7657d8
11 changed files with 272 additions and 158 deletions
@@ -18,7 +18,6 @@ import { useI18n } from '@affine/i18n';
import {
DeleteIcon,
DeletePermanentlyIcon,
DualLinkIcon,
DuplicateIcon,
EditIcon,
FavoritedIcon,
@@ -27,6 +26,7 @@ import {
FilterMinusIcon,
InformationIcon,
MoreVerticalIcon,
OpenInNewIcon,
PlusIcon,
ResetIcon,
SplitViewIcon,
@@ -39,7 +39,6 @@ import {
WorkspaceService,
} from '@toeverything/infra';
import { useCallback, useState } from 'react';
import { Link } from 'react-router-dom';
import type { CollectionService } from '../../modules/collection';
import { InfoModal } from '../affine/page-properties';
@@ -49,7 +48,7 @@ import * as styles from './list.css';
import { DisablePublicSharing, MoveToTrash } from './operation-menu-items';
import { CreateOrEditTag } from './tags/create-tag';
import type { TagMeta } from './types';
import { ColWrapper, stopPropagationWithoutPrevent } from './utils';
import { ColWrapper } from './utils';
import { useEditCollection, useEditCollectionName } from './view';
const tooltipSideTop = { side: 'top' as const };
@@ -100,6 +99,10 @@ export const PageOperationCell = ({
workbench.openDoc(page.id, { at: 'tail' });
}, [page.id, workbench]);
const onOpenInNewTab = useCallback(() => {
workbench.openDoc(page.id, { at: 'new-tab' });
}, [page.id, workbench]);
const onToggleFavoritePage = useCallback(() => {
const status = favAdapter.isFavorite(page.id, 'doc');
favAdapter.toggle(page.id, 'doc');
@@ -173,6 +176,17 @@ export const PageOperationCell = ({
</MenuItem>
) : null}
<MenuItem
onClick={onOpenInNewTab}
preFix={
<MenuIcon>
<OpenInNewIcon />
</MenuIcon>
}
>
{t['com.affine.workbench.tab.page-menu-open']()}
</MenuItem>
{environment.isDesktop && appSettings.enableMultiView ? (
<MenuItem
onClick={onOpenInSplitView}
@@ -186,27 +200,6 @@ export const PageOperationCell = ({
</MenuItem>
) : null}
{!environment.isDesktop && (
<Link
className={styles.clearLinkStyle}
onClick={stopPropagationWithoutPrevent}
to={`/workspace/${currentWorkspace.id}/${page.id}`}
target={'_blank'}
rel="noopener noreferrer"
>
<MenuItem
style={{ marginBottom: 4 }}
preFix={
<MenuIcon>
<DualLinkIcon />
</MenuIcon>
}
>
{t['com.affine.openPageOperation.newTab']()}
</MenuItem>
</Link>
)}
<MenuItem
preFix={
<MenuIcon>
@@ -12,6 +12,7 @@ import {
FavoritedIcon,
FavoriteIcon,
FilterIcon,
OpenInNewIcon,
PlusIcon,
SplitViewIcon,
} from '@blocksuite/icons/rc';
@@ -79,6 +80,10 @@ export const CollectionOperations = ({
workbench.openCollection(collection.id, { at: 'tail' });
}, [collection.id, workbench]);
const openCollectionNewTab = useCallback(() => {
workbench.openCollection(collection.id, { at: 'new-tab' });
}, [collection.id, workbench]);
const favAdapter = useService(CompatibleFavoriteItemsAdapter);
const onToggleFavoritePage = useCallback(() => {
@@ -153,6 +158,15 @@ export const CollectionOperations = ({
: t['com.affine.favoritePageOperation.add'](),
click: onToggleFavoritePage,
},
{
icon: (
<MenuIcon>
<OpenInNewIcon />
</MenuIcon>
),
name: t['com.affine.workbench.tab.page-menu-open'](),
click: openCollectionNewTab,
},
...(appSettings.enableMultiView
? [
{
@@ -189,6 +203,7 @@ export const CollectionOperations = ({
onAddDocToCollection,
favorite,
onToggleFavoritePage,
openCollectionNewTab,
appSettings.enableMultiView,
openCollectionSplitView,
service,