From cea3fef52677c7750c067157020194e48f37ebfe Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Fri, 29 Nov 2024 14:49:43 +0530 Subject: [PATCH] chore: update page infor dropdown --- .../[projectId]/pages/(detail)/header.tsx | 6 +- .../dropdowns/edit-information-popover.tsx | 71 ----------------- web/core/components/pages/dropdowns/index.ts | 1 - .../pages/editor/header/extra-options.tsx | 6 +- .../pages/editor/header/info-popover.tsx | 77 ++++++++++++++++--- .../pages/editor/header/options-dropdown.tsx | 2 +- 6 files changed, 75 insertions(+), 88 deletions(-) delete mode 100644 web/core/components/pages/dropdowns/edit-information-popover.tsx diff --git a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx index 44ba6d7f5f..2d9f0b64d1 100644 --- a/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx +++ b/web/app/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/header.tsx @@ -10,8 +10,8 @@ import { TLogoProps } from "@plane/types"; import { Breadcrumbs, EmojiIconPicker, EmojiIconPickerTypes, TOAST_TYPE, Tooltip, setToast, Header } from "@plane/ui"; // components import { BreadcrumbLink, Logo } from "@/components/common"; -import { PageEditInformationPopover } from "@/components/pages"; // helpers +import { calculateTimeAgoShort } from "@/helpers/date-time.helper"; import { convertHexEmojiToDecimal } from "@/helpers/emoji.helper"; import { getPageName } from "@/helpers/page.helper"; // hooks @@ -169,7 +169,9 @@ export const PageDetailsHeader = observer(() => { - +
+ Edited {calculateTimeAgoShort(page.updated_at ?? "")} ago +
diff --git a/web/core/components/pages/dropdowns/edit-information-popover.tsx b/web/core/components/pages/dropdowns/edit-information-popover.tsx deleted file mode 100644 index 92e6d8fab5..0000000000 --- a/web/core/components/pages/dropdowns/edit-information-popover.tsx +++ /dev/null @@ -1,71 +0,0 @@ -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 { IPage } from "@/store/pages/page"; - -type Props = { - page: IPage; -}; - -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/dropdowns/index.ts b/web/core/components/pages/dropdowns/index.ts index 16d9c33720..db98841b0e 100644 --- a/web/core/components/pages/dropdowns/index.ts +++ b/web/core/components/pages/dropdowns/index.ts @@ -1,2 +1 @@ -export * from "./edit-information-popover"; export * from "./quick-actions"; diff --git a/web/core/components/pages/editor/header/extra-options.tsx b/web/core/components/pages/editor/header/extra-options.tsx index f21959cd93..5c24d6700c 100644 --- a/web/core/components/pages/editor/header/extra-options.tsx +++ b/web/core/components/pages/editor/header/extra-options.tsx @@ -58,7 +58,7 @@ export const PageExtraOptions: React.FC = observer((props) => { }; return ( -
+
{is_locked && } {archived_at && (
@@ -81,11 +81,11 @@ export const PageExtraOptions: React.FC = observer((props) => { )} - + = (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 }; @@ -55,22 +72,62 @@ export const PageInfoPopover: React.FC = (props) => { return (
setIsPopoverOpen(true)} onMouseLeave={() => setIsPopoverOpen(false)}> - {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)} + + +
+
)}
diff --git a/web/core/components/pages/editor/header/options-dropdown.tsx b/web/core/components/pages/editor/header/options-dropdown.tsx index c7cf53a5f5..adc1b67a8f 100644 --- a/web/core/components/pages/editor/header/options-dropdown.tsx +++ b/web/core/components/pages/editor/header/options-dropdown.tsx @@ -180,7 +180,7 @@ export const PageOptionsDropdown: React.FC = observer((props) => { onClose={() => setIsExportModalOpen(false)} pageTitle={name ?? ""} /> - + handleFullWidth(!isFullWidth)}