diff --git a/packages/app/package.json b/packages/app/package.json index 4d911419ad..792cc18994 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -25,6 +25,7 @@ "@toeverything/pathfinder-logger": "workspace:@pathfinder/logger@*", "cmdk": "^0.1.20", "css-spring": "^4.1.0", + "dayjs": "^1.11.7", "lit": "^2.3.1", "next": "13.0.1", "prettier": "^2.7.1", diff --git a/packages/app/src/components/page-list/date-cell.tsx b/packages/app/src/components/page-list/date-cell.tsx new file mode 100644 index 0000000000..3b01a8bea8 --- /dev/null +++ b/packages/app/src/components/page-list/date-cell.tsx @@ -0,0 +1,24 @@ +import localizedFormat from 'dayjs/plugin/localizedFormat'; +import dayjs from 'dayjs'; +import { PageMeta } from '@/providers/editor-provider'; +import { TableCell } from '@/ui/table'; +import React from 'react'; + +dayjs.extend(localizedFormat); + +export const DateCell = ({ + pageMeta, + dateKey, +}: { + pageMeta: PageMeta; + dateKey: keyof PageMeta; +}) => { + // dayjs().format('L LT'); + return ( + + {dayjs(pageMeta[dateKey] as string).format('YYYY-MM-DD HH:MM')} + + ); +}; + +export default DateCell; diff --git a/packages/app/src/components/page-list/index.tsx b/packages/app/src/components/page-list/index.tsx index 623d4dbaaf..20030c06bc 100644 --- a/packages/app/src/components/page-list/index.tsx +++ b/packages/app/src/components/page-list/index.tsx @@ -12,6 +12,7 @@ import { OperationCell, TrashOperationCell } from './operation-cell'; import Empty from './empty'; import Link from 'next/link'; import React from 'react'; +import DateCell from '@/components/page-list/date-cell'; const FavoriteTag = ({ pageMeta }: { pageMeta: PageMeta }) => { const { toggleFavoritePage } = useEditor(); @@ -40,6 +41,7 @@ export const PageList = ({ if (pageList.length === 0) { return ; } + return ( @@ -48,7 +50,7 @@ export const PageList = ({ DocumentsCreated - {isTrash ? 'Uploaded' : 'Moved to Trash'} + {isTrash ? 'Moved to Trash' : 'Uploaded'} @@ -69,8 +71,11 @@ export const PageList = ({ {showFavoriteTag && } - {pageMeta.createDate} - {pageMeta.createDate} + + {isTrash ? ( diff --git a/packages/app/src/components/page-list/operation-cell.tsx b/packages/app/src/components/page-list/operation-cell.tsx index 4599b2d5ff..b487a68df4 100644 --- a/packages/app/src/components/page-list/operation-cell.tsx +++ b/packages/app/src/components/page-list/operation-cell.tsx @@ -3,7 +3,15 @@ import { useConfirm } from '@/providers/confirm-provider'; import { Menu, MenuItem } from '@/ui/menu'; import { Wrapper } from '@/ui/layout'; import { IconButton } from '@/ui/button'; -import { MoreVerticalIcon, RestoreIcon, DeleteIcon } from '@blocksuite/icons'; +import { + MoreVerticalIcon, + RestoreIcon, + DeleteIcon, + FavouritesIcon, + FavouritedIcon, + OpenInNewIcon, + TrashIcon, +} from '@blocksuite/icons'; import React from 'react'; export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { @@ -17,6 +25,7 @@ export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { onClick={() => { toggleFavoritePage(id); }} + icon={favorite ? : } > {favorite ? 'Remove' : 'Add'} to favourites @@ -24,6 +33,7 @@ export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { onClick={() => { openPage(id); }} + icon={} > Open in new tab @@ -39,6 +49,7 @@ export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { confirm && toggleDeletePage(id); }); }} + icon={} > Delete diff --git a/packages/app/src/components/workspace-slider-bar/index.tsx b/packages/app/src/components/workspace-slider-bar/index.tsx index 7fffa5b3f7..b90da9808c 100644 --- a/packages/app/src/components/workspace-slider-bar/index.tsx +++ b/packages/app/src/components/workspace-slider-bar/index.tsx @@ -29,7 +29,7 @@ const FavoriteList = ({ showList }: { showList: boolean }) => { const { pageList, openPage } = useEditor(); const router = useRouter(); - const favoriteList = pageList.filter(p => p.favorite); + const favoriteList = pageList.filter(p => p.favorite && !p.trash); return ( {favoriteList.map((pageMeta, index) => { diff --git a/packages/app/src/providers/editor-provider/interface.ts b/packages/app/src/providers/editor-provider/interface.ts index 3b5a2290ce..11201c11f8 100644 --- a/packages/app/src/providers/editor-provider/interface.ts +++ b/packages/app/src/providers/editor-provider/interface.ts @@ -17,8 +17,6 @@ export type EditorHandlers = { query?: { [key: string]: string } ) => Promise; getPageMeta: (pageId: string) => PageMeta | void; - deletePage: (pageId: string) => void; - recyclePage: (pageId: string) => void; toggleDeletePage: (pageId: string) => void; favoritePage: (pageId: string) => void; unFavoritePage: (pageId: string) => void; diff --git a/packages/app/src/providers/editor-provider/useEditorHandler.ts b/packages/app/src/providers/editor-provider/useEditorHandler.ts index b5cf1f114a..3341ddbd52 100644 --- a/packages/app/src/providers/editor-provider/useEditorHandler.ts +++ b/packages/app/src/providers/editor-provider/useEditorHandler.ts @@ -26,15 +26,10 @@ export const useEditorHandler = (workspace?: Workspace): EditorHandlers => { }, }); }, - deletePage: pageId => { - workspace!.setPageMeta(pageId, { trash: true }); - }, - recyclePage: pageId => { - workspace!.setPageMeta(pageId, { trash: false }); - }, toggleDeletePage: pageId => { const pageMeta = workspace!.meta.pageMetas.find(p => p.id === pageId); if (pageMeta) { + workspace!.meta.setPage(pageId, { trashDate: new Date().getTime() }); workspace!.setPageMeta(pageId, { trash: !pageMeta.trash }); } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dbc65832e8..3a9be78460 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,6 +41,7 @@ importers: '@types/react-dom': 18.0.6 cmdk: ^0.1.20 css-spring: ^4.1.0 + dayjs: ^1.11.7 eslint: 8.22.0 eslint-config-next: 12.3.1 eslint-config-prettier: ^8.5.0 @@ -70,6 +71,7 @@ importers: '@toeverything/pathfinder-logger': link:../logger cmdk: 0.1.20_7ey2zzynotv32rpkwno45fsx4e css-spring: 4.1.0 + dayjs: 1.11.7 lit: 2.4.0 next: 13.0.1_biqbaboplfbrettd7655fr4n2y prettier: 2.7.1 @@ -1579,6 +1581,10 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /dayjs/1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + dev: false + /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -1877,7 +1883,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.38.0_eslint@8.22.0 + '@typescript-eslint/parser': 5.38.0_76twfck5d7crjqrmw4yltga7zm debug: 3.2.7 eslint: 8.22.0 eslint-import-resolver-node: 0.3.6 @@ -1896,7 +1902,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.38.0_eslint@8.22.0 + '@typescript-eslint/parser': 5.38.0_76twfck5d7crjqrmw4yltga7zm array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9