From 7dda6bb73c3ca0bc1a995119831c5028a5e8d3d4 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Mon, 30 Dec 2024 12:38:04 +0530 Subject: [PATCH] chore: merge two separate info popovers --- .../dropdowns/edit-information-popover.tsx | 58 +-------------- .../pages/editor/header/extra-options.tsx | 2 +- .../pages/editor/header/info-popover.tsx | 72 +++++++++++++++++-- 3 files changed, 69 insertions(+), 63 deletions(-) diff --git a/web/core/components/pages/dropdowns/edit-information-popover.tsx b/web/core/components/pages/dropdowns/edit-information-popover.tsx index a349ef0daff..9157c9f91c7 100644 --- a/web/core/components/pages/dropdowns/edit-information-popover.tsx +++ b/web/core/components/pages/dropdowns/edit-information-popover.tsx @@ -1,14 +1,7 @@ import { observer } from "mobx-react"; -import Link from "next/link"; -import { useParams } from "next/navigation"; -// plane ui -import { Avatar } from "@plane/ui"; // helpers -import { calculateTimeAgoShort, renderFormattedDate } from "@/helpers/date-time.helper"; -import { getFileURL } from "@/helpers/file.helper"; -// hooks -import { useMember } from "@/hooks/store"; -// store +import { calculateTimeAgoShort } from "@/helpers/date-time.helper"; +// store types import { TPageInstance } from "@/store/pages/base-page"; type Props = { @@ -17,55 +10,10 @@ type Props = { export const PageEditInformationPopover: React.FC = observer((props) => { const { page } = props; - // router - const { workspaceSlug } = useParams(); - // store hooks - const { getUserDetails } = useMember(); - // derived values - const editorInformation = page.updated_by ? getUserDetails(page.updated_by) : undefined; - const creatorInformation = page.created_by ? getUserDetails(page.created_by) : undefined; return ( -
+
Edited {calculateTimeAgoShort(page.updated_at ?? "")} ago -
-
-

Edited by

- - - - {editorInformation?.display_name}{" "} - {renderFormattedDate(page.updated_at)} - - -
-
-

Created by

- - - - {creatorInformation?.display_name}{" "} - {renderFormattedDate(page.created_at)} - - -
-
); }); diff --git a/web/core/components/pages/editor/header/extra-options.tsx b/web/core/components/pages/editor/header/extra-options.tsx index 5f7153c5105..8f27969ab42 100644 --- a/web/core/components/pages/editor/header/extra-options.tsx +++ b/web/core/components/pages/editor/header/extra-options.tsx @@ -84,7 +84,7 @@ export const PageExtraOptions: React.FC = observer((props) => { iconClassName="text-custom-text-100" /> )} - +
); diff --git a/web/core/components/pages/editor/header/info-popover.tsx b/web/core/components/pages/editor/header/info-popover.tsx index 13a1b17666a..ea9b734da10 100644 --- a/web/core/components/pages/editor/header/info-popover.tsx +++ b/web/core/components/pages/editor/header/info-popover.tsx @@ -1,26 +1,44 @@ import { useState } from "react"; +import Link from "next/link"; +import { useParams } from "next/navigation"; import { usePopper } from "react-popper"; import { Info } from "lucide-react"; // plane editor import { EditorRefApi } from "@plane/editor"; +// plane ui +import { Avatar } from "@plane/ui"; +// plane utils +import { getFileURL, renderFormattedDate } from "@plane/utils"; // helpers import { getReadTimeFromWordsCount } from "@/helpers/date-time.helper"; +// hooks +import { useMember } from "@/hooks/store"; +// store types +import { TPageInstance } from "@/store/pages/base-page"; type Props = { editorRef: EditorRefApi | null; + page: TPageInstance; }; export const PageInfoPopover: React.FC = (props) => { - const { editorRef } = props; + const { editorRef, page } = props; // states const [isPopoverOpen, setIsPopoverOpen] = useState(false); // refs const [referenceElement, setReferenceElement] = useState(null); const [popperElement, setPopperElement] = useState(null); + // router + const { workspaceSlug } = useParams(); // popper-js const { styles: infoPopoverStyles, attributes: infoPopoverAttributes } = usePopper(referenceElement, popperElement, { placement: "bottom-start", }); + // store hooks + const { getUserDetails } = useMember(); + // derived values + const editorInformation = page.updated_by ? getUserDetails(page.updated_by) : undefined; + const creatorInformation = page.created_by ? getUserDetails(page.created_by) : undefined; const documentsInfo = editorRef?.getDocumentInfo() || { words: 0, characters: 0, paragraphs: 0 }; @@ -60,17 +78,57 @@ export const PageInfoPopover: React.FC = (props) => { {isPopoverOpen && (
- {documentInfoCards.map((card) => ( -
-
{card.info}
-

{card.title}

+
+ {documentInfoCards.map((card) => ( +
+
{card.info}
+

{card.title}

+
+ ))} +
+
+
+

Edited by

+ + + + {editorInformation?.display_name}{" "} + {renderFormattedDate(page.updated_at)} + +
- ))} +
+

Created by

+ + + + {creatorInformation?.display_name}{" "} + {renderFormattedDate(page.created_at)} + + +
+
)}