-
-
-
- {groupOptions.map(group => (
- setProperties('groupBy', group.value)}
- selected={properties.groupBy === group.value}
- key={group.value}
- >
- {group.label}
-
- ))}
- >
- }
- >
-
-
{t['com.affine.page.display.grouping']()}
-
-
{activeGroup?.label}
-
-
-
-
-
-
-
-
- {t['com.affine.page.display.display-properties']()}
-
-
-
-
-
- );
-};
diff --git a/packages/frontend/core/src/mobile/views/all-docs/index.ts b/packages/frontend/core/src/mobile/views/all-docs/index.ts
index 7cc2e75cf..200e45b17 100644
--- a/packages/frontend/core/src/mobile/views/all-docs/index.ts
+++ b/packages/frontend/core/src/mobile/views/all-docs/index.ts
@@ -1,4 +1,3 @@
export * from './collection';
-export * from './doc/';
export * from './header';
export * from './tag';
diff --git a/packages/frontend/core/src/mobile/views/all-docs/tag/detail.tsx b/packages/frontend/core/src/mobile/views/all-docs/tag/detail.tsx
index f11b68292..7110a1751 100644
--- a/packages/frontend/core/src/mobile/views/all-docs/tag/detail.tsx
+++ b/packages/frontend/core/src/mobile/views/all-docs/tag/detail.tsx
@@ -1,13 +1,93 @@
+import { Wrapper } from '@affine/component';
+import { EmptyDocs } from '@affine/core/components/affine/empty';
+import {
+ createDocExplorerContext,
+ DocExplorerContext,
+} from '@affine/core/components/explorer/context';
+import { DocsExplorer } from '@affine/core/components/explorer/docs-view/docs-list';
import { Page } from '@affine/core/mobile/components/page';
+import { CollectionRulesService } from '@affine/core/modules/collection-rules';
import type { Tag } from '@affine/core/modules/tag';
+import { useLiveData, useService } from '@toeverything/infra';
+import { useEffect, useState } from 'react';
-import { AllDocList } from '../doc';
import { TagDetailHeader } from './detail-header';
+const TagDocs = ({ tag }: { tag: Tag }) => {
+ const [explorerContextValue] = useState(() =>
+ createDocExplorerContext({
+ quickFavorite: true,
+ displayProperties: ['createdAt', 'updatedAt', 'tags'],
+ view: 'masonry',
+ showDragHandle: false,
+ })
+ );
+ const collectionRulesService = useService(CollectionRulesService);
+ const groups = useLiveData(explorerContextValue.groups$);
+ const isEmpty =
+ groups.length === 0 ||
+ (groups.length && groups.every(group => !group.items.length));
+
+ useEffect(() => {
+ const subscription = collectionRulesService
+ .watch({
+ filters: [
+ { type: 'system', key: 'trash', method: 'is', value: 'false' },
+ {
+ type: 'system',
+ key: 'tags',
+ method: 'include-all',
+ value: tag.id,
+ },
+ ],
+ extraFilters: [
+ { type: 'system', key: 'trash', method: 'is', value: 'false' },
+ {
+ type: 'system',
+ key: 'empty-journal',
+ method: 'is',
+ value: 'false',
+ },
+ ],
+ orderBy: {
+ type: 'property',
+ key: 'createdAt',
+ desc: true,
+ },
+ })
+ .subscribe({
+ next: result => {
+ explorerContextValue.groups$.next(result.groups);
+ },
+ error: console.error,
+ });
+ return () => subscription.unsubscribe();
+ }, [collectionRulesService, explorerContextValue.groups$, tag.id]);
+
+ if (isEmpty) {
+ return (
+ <>
+