diff --git a/packages/frontend/core/src/modules/doc-info/views/database-properties/doc-database-backlink-info.tsx b/packages/frontend/core/src/modules/doc-info/views/database-properties/doc-database-backlink-info.tsx index c298306f6..baa3d57c8 100644 --- a/packages/frontend/core/src/modules/doc-info/views/database-properties/doc-database-backlink-info.tsx +++ b/packages/frontend/core/src/modules/doc-info/views/database-properties/doc-database-backlink-info.tsx @@ -6,11 +6,12 @@ import { } from '@affine/component'; import { AffinePageReference } from '@affine/core/components/affine/reference-link'; import { DocService } from '@affine/core/modules/doc'; +import { TemplateDocService } from '@affine/core/modules/template-doc'; import { useI18n } from '@affine/i18n'; import type { DatabaseBlockDataSource } from '@blocksuite/affine/blocks/database'; import { DatabaseTableViewIcon, PageIcon } from '@blocksuite/icons/rc'; import { LiveData, useLiveData, useService } from '@toeverything/infra'; -import { Fragment, useMemo } from 'react'; +import { useMemo } from 'react'; import type { Observable } from 'rxjs'; import { DocDatabaseBacklinksService } from '../../services/doc-database-backlinks'; @@ -96,13 +97,24 @@ const DatabaseBacklinkRow = ({ useMemo(() => LiveData.from(row$, undefined), [row$]) ); const sortedCells = useMemo(() => { - return row?.cells.toSorted((a, b) => { - return (a.property.name$.value ?? '').localeCompare( - b.property.name$.value ?? '' - ); - }); + return row?.cells + .filter(cell => cell.property.id !== 'title') + .toSorted((a, b) => { + return (a.property.name$.value ?? '').localeCompare( + b.property.name$.value ?? '' + ); + }); }, [row?.cells]); const t = useI18n(); + const templateDocService = useService(TemplateDocService); + + const isTemplateDoc = useLiveData( + useMemo( + () => + row?.docId ? templateDocService.list.isTemplate$(row.docId) : undefined, + [row?.docId, templateDocService.list] + ) + ); const pageRefParams = useMemo(() => { const params = new URLSearchParams(); @@ -112,52 +124,55 @@ const DatabaseBacklinkRow = ({ return params; }, [row]); - if (!row || !sortedCells) { + if (!row || !sortedCells || sortedCells.length === 0 || isTemplateDoc) { return null; } return ( - - - {row.databaseName || t['unnamed']()} + <> + + + {row.databaseName || t['unnamed']()} + + {t['properties']()} - {t['properties']()} - - } - defaultCollapsed={!defaultOpen} - icon={} - suffix={ - - } - > - } + suffix={ + + } > - {sortedCells.map(cell => { - return ( - onChange?.(row, cell, value)} - /> - ); - })} - - + + {sortedCells.map(cell => { + return ( + onChange?.(row, cell, value)} + /> + ); + })} + + + + ); }; @@ -196,21 +211,19 @@ export const DocDatabaseBacklinkInfo = ({ return (
{rows.map(({ docId, databaseBlockId, rowId, row$ }) => ( - - - backlink.databaseBlockId === databaseBlockId && - backlink.rowId === rowId && - backlink.docId === docId - ) ?? false - } - row$={row$} - onChange={onChange} - /> - - + + backlink.databaseBlockId === databaseBlockId && + backlink.rowId === rowId && + backlink.docId === docId + ) ?? false + } + row$={row$} + onChange={onChange} + /> ))}
);