feat(core): support removing journal template from right sidebar (#10571)

This commit is contained in:
CatsJuice
2025-03-07 12:32:42 +00:00
parent 83b05aca4d
commit 9f3580263a
2 changed files with 25 additions and 4 deletions

View File

@@ -1,10 +1,10 @@
import { Button, Menu } from '@affine/component'; import { Button, Menu, MenuItem, MenuSeparator } from '@affine/component';
import { DocsService } from '@affine/core/modules/doc'; import { DocsService } from '@affine/core/modules/doc';
import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta'; import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta';
import { TemplateDocService } from '@affine/core/modules/template-doc'; import { TemplateDocService } from '@affine/core/modules/template-doc';
import { TemplateListMenuContentScrollable } from '@affine/core/modules/template-doc/view/template-list-menu'; import { TemplateListMenuContentScrollable } from '@affine/core/modules/template-doc/view/template-list-menu';
import { useI18n } from '@affine/i18n'; import { useI18n } from '@affine/i18n';
import { TemplateIcon } from '@blocksuite/icons/rc'; import { DeleteIcon, TemplateIcon } from '@blocksuite/icons/rc';
import { useLiveData, useService } from '@toeverything/infra'; import { useLiveData, useService } from '@toeverything/infra';
import clsx from 'clsx'; import clsx from 'clsx';
import { useCallback, useMemo } from 'react'; import { useCallback, useMemo } from 'react';
@@ -33,18 +33,38 @@ export const JournalTemplateSetting = () => {
const isDeleted = useLiveData(journalTemplateDoc?.trash$); const isDeleted = useLiveData(journalTemplateDoc?.trash$);
const updateJournalTemplate = useCallback( const updateJournalTemplate = useCallback(
(templateId: string) => { (templateId?: string) => {
templateDocService.setting.updateJournalTemplateDocId(templateId); templateDocService.setting.updateJournalTemplateDocId(templateId);
}, },
[templateDocService.setting] [templateDocService.setting]
); );
const removeJournalTemplate = useCallback(() => {
updateJournalTemplate();
}, [updateJournalTemplate]);
return ( return (
<div className={styles.container}> <div className={styles.container}>
<Menu <Menu
contentOptions={{ className: styles.menu }} contentOptions={{ className: styles.menu }}
items={ items={
<TemplateListMenuContentScrollable onSelect={updateJournalTemplate} /> <TemplateListMenuContentScrollable
onSelect={updateJournalTemplate}
suffixItems={
journalTemplateDocId ? (
<>
<MenuSeparator />
<MenuItem
prefixIcon={<DeleteIcon />}
onClick={removeJournalTemplate}
type="danger"
>
{t['com.affine.template-list.delete']()}
</MenuItem>
</>
) : null
}
/>
} }
> >
<Button <Button

View File

@@ -1736,6 +1736,7 @@
"com.affine.page-starter-bar.edgeless": "Edgeless", "com.affine.page-starter-bar.edgeless": "Edgeless",
"tips": "Tips", "tips": "Tips",
"Template": "Template", "Template": "Template",
"com.affine.template-list.delete": "Delete Template",
"com.affine.template-list.empty": "No template", "com.affine.template-list.empty": "No template",
"com.affine.template-list.create-new": "Create new template", "com.affine.template-list.create-new": "Create new template",
"com.affine.template-journal-onboarding.title": "Set a Template for the Journal", "com.affine.template-journal-onboarding.title": "Set a Template for the Journal",