From 6918393b63366e65dbd0d352805777102d5f0d02 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Thu, 2 May 2024 16:11:38 +0530 Subject: [PATCH 1/4] fix: existing issue list modal loading flicker (#4337) --- web/components/core/modals/existing-issues-list-modal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/components/core/modals/existing-issues-list-modal.tsx b/web/components/core/modals/existing-issues-list-modal.tsx index 757888554c..93e2c2ea78 100644 --- a/web/components/core/modals/existing-issues-list-modal.tsx +++ b/web/components/core/modals/existing-issues-list-modal.tsx @@ -85,7 +85,7 @@ export const ExistingIssuesListModal: React.FC = (props) => { setIsSearching(false); setIsLoading(false); }); - }, [debouncedSearchTerm, isOpen, isWorkspaceLevel, projectId, searchParams, workspaceSlug]); + }, [debouncedSearchTerm, isOpen, isWorkspaceLevel, projectId, workspaceSlug]); return ( <> From 42c4c469396171f7d0ef51a7510586ccee3f1f92 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Thu, 2 May 2024 16:13:04 +0530 Subject: [PATCH 2/4] [WEB-1154] fix: delete attachment modal logic (#4338) * fix: delete attachment modal logic * chore: remove console log * chore: update delete attachment button type --- .../issues/attachment/attachment-detail.tsx | 42 +++++++++---------- ...-modal.tsx => delete-attachment-modal.tsx} | 10 ++--- web/components/issues/attachment/index.ts | 10 ++--- web/store/issue/issue-details/root.store.ts | 10 ++--- 4 files changed, 35 insertions(+), 37 deletions(-) rename web/components/issues/attachment/{delete-attachment-confirmation-modal.tsx => delete-attachment-modal.tsx} (94%) diff --git a/web/components/issues/attachment/attachment-detail.tsx b/web/components/issues/attachment/attachment-detail.tsx index 617bc7e073..9e6a35f5fc 100644 --- a/web/components/issues/attachment/attachment-detail.tsx +++ b/web/components/issues/attachment/attachment-detail.tsx @@ -2,19 +2,19 @@ import { FC } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; import { AlertCircle, X } from "lucide-react"; +// ui import { Tooltip } from "@plane/ui"; -import { getFileIcon } from "@/components/icons/attachment"; +// icons +import { getFileIcon } from "@/components/icons"; +// components +import { IssueAttachmentDeleteModal } from "@/components/issues"; +// helpers import { convertBytesToSize, getFileExtension, getFileName } from "@/helpers/attachment.helper"; import { renderFormattedDate } from "@/helpers/date-time.helper"; import { truncateText } from "@/helpers/string.helper"; +// hooks import { useIssueDetail, useMember } from "@/hooks/store"; import { usePlatformOS } from "@/hooks/use-platform-os"; -// hooks -// ui -// components -// icons -// helper -import { IssueAttachmentDeleteModal } from "./delete-attachment-confirmation-modal"; // types import { TAttachmentOperations } from "./root"; @@ -36,24 +36,24 @@ export const IssueAttachmentsDetail: FC = observer((pro isDeleteAttachmentModalOpen, toggleDeleteAttachmentModal, } = useIssueDetail(); - // states + // derived values + const attachment = attachmentId ? getAttachmentById(attachmentId) : undefined; + // hooks const { isMobile } = usePlatformOS(); - const attachment = attachmentId && getAttachmentById(attachmentId); if (!attachment) return <>; + return ( <> - toggleDeleteAttachmentModal(false)} - handleAttachmentOperations={handleAttachmentOperations} - data={attachment} - /> - -
+ {isDeleteAttachmentModalOpen === attachment.id && ( + toggleDeleteAttachmentModal(null)} + handleAttachmentOperations={handleAttachmentOperations} + data={attachment} + /> + )} +
{getFileIcon(getFileExtension(attachment.asset))}
@@ -83,7 +83,7 @@ export const IssueAttachmentsDetail: FC = observer((pro {!disabled && ( - )} diff --git a/web/components/issues/attachment/delete-attachment-confirmation-modal.tsx b/web/components/issues/attachment/delete-attachment-modal.tsx similarity index 94% rename from web/components/issues/attachment/delete-attachment-confirmation-modal.tsx rename to web/components/issues/attachment/delete-attachment-modal.tsx index bd69c3cac1..4f58674f12 100644 --- a/web/components/issues/attachment/delete-attachment-confirmation-modal.tsx +++ b/web/components/issues/attachment/delete-attachment-modal.tsx @@ -1,4 +1,4 @@ -import { FC, Fragment, Dispatch, SetStateAction, useState } from "react"; +import { FC, Fragment, useState } from "react"; import { AlertTriangle } from "lucide-react"; import { Dialog, Transition } from "@headlessui/react"; import type { TIssueAttachment } from "@plane/types"; @@ -14,18 +14,18 @@ export type TAttachmentOperationsRemoveModal = Exclude>; + onClose: () => void; data: TIssueAttachment; handleAttachmentOperations: TAttachmentOperationsRemoveModal; }; export const IssueAttachmentDeleteModal: FC = (props) => { - const { isOpen, setIsOpen, data, handleAttachmentOperations } = props; - // state + const { isOpen, onClose, data, handleAttachmentOperations } = props; + // states const [loader, setLoader] = useState(false); const handleClose = () => { - setIsOpen(false); + onClose(); setLoader(false); }; diff --git a/web/components/issues/attachment/index.ts b/web/components/issues/attachment/index.ts index d4385e7da7..928cd46139 100644 --- a/web/components/issues/attachment/index.ts +++ b/web/components/issues/attachment/index.ts @@ -1,7 +1,5 @@ -export * from "./root"; - -export * from "./attachment-upload"; -export * from "./delete-attachment-confirmation-modal"; - -export * from "./attachments-list"; export * from "./attachment-detail"; +export * from "./attachment-upload"; +export * from "./attachments-list"; +export * from "./delete-attachment-modal"; +export * from "./root"; diff --git a/web/store/issue/issue-details/root.store.ts b/web/store/issue/issue-details/root.store.ts index f6ad0a3073..853cef2389 100644 --- a/web/store/issue/issue-details/root.store.ts +++ b/web/store/issue/issue-details/root.store.ts @@ -51,7 +51,7 @@ export interface IIssueDetail isArchiveIssueModalOpen: boolean; isRelationModalOpen: TIssueRelationTypes | null; isSubIssuesModalOpen: boolean; - isDeleteAttachmentModalOpen: boolean; + isDeleteAttachmentModalOpen: string | null; // computed isAnyModalOpen: boolean; // helper actions @@ -65,7 +65,7 @@ export interface IIssueDetail toggleArchiveIssueModal: (value: boolean) => void; toggleRelationModal: (relationType: TIssueRelationTypes | null) => void; toggleSubIssuesModal: (value: boolean) => void; - toggleDeleteAttachmentModal: (value: boolean) => void; + toggleDeleteAttachmentModal: (attachmentId: string | null) => void; // store rootIssueStore: IIssueRootStore; issue: IIssueStore; @@ -90,7 +90,7 @@ export class IssueDetail implements IIssueDetail { isArchiveIssueModalOpen: boolean = false; isRelationModalOpen: TIssueRelationTypes | null = null; isSubIssuesModalOpen: boolean = false; - isDeleteAttachmentModalOpen: boolean = false; + isDeleteAttachmentModalOpen: string | null = null; // store rootIssueStore: IIssueRootStore; issue: IIssueStore; @@ -154,7 +154,7 @@ export class IssueDetail implements IIssueDetail { this.isArchiveIssueModalOpen || !!this.isRelationModalOpen || this.isSubIssuesModalOpen || - this.isDeleteAttachmentModalOpen + !!this.isDeleteAttachmentModalOpen ); } @@ -170,7 +170,7 @@ export class IssueDetail implements IIssueDetail { toggleArchiveIssueModal = (value: boolean) => (this.isArchiveIssueModalOpen = value); toggleRelationModal = (relationType: TIssueRelationTypes | null) => (this.isRelationModalOpen = relationType); toggleSubIssuesModal = (value: boolean) => (this.isSubIssuesModalOpen = value); - toggleDeleteAttachmentModal = (value: boolean) => (this.isDeleteAttachmentModalOpen = value); + toggleDeleteAttachmentModal = (attachmentId: string | null) => (this.isDeleteAttachmentModalOpen = attachmentId); // issue fetchIssue = async ( From c4229c9d554484ce6465da3f8ff1e0631eafb14b Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Thu, 2 May 2024 16:13:58 +0530 Subject: [PATCH 3/4] fix: quick actions dropdown disabled state (#4335) --- web/components/cycles/quick-actions.tsx | 1 + .../issues/issue-layouts/quick-action-dropdowns/all-issue.tsx | 1 + .../issue-layouts/quick-action-dropdowns/archived-issue.tsx | 1 + .../issue-layouts/quick-action-dropdowns/cycle-issue.tsx | 1 + .../issue-layouts/quick-action-dropdowns/draft-issue.tsx | 1 + .../issue-layouts/quick-action-dropdowns/module-issue.tsx | 1 + .../issue-layouts/quick-action-dropdowns/project-issue.tsx | 1 + web/components/modules/quick-actions.tsx | 1 + web/components/pages/dropdowns/quick-actions.tsx | 1 + web/components/project/card.tsx | 4 ++-- web/components/views/quick-actions.tsx | 1 + web/components/workspace/views/default-view-quick-action.tsx | 1 + web/components/workspace/views/quick-action.tsx | 1 + 13 files changed, 14 insertions(+), 2 deletions(-) diff --git a/web/components/cycles/quick-actions.tsx b/web/components/cycles/quick-actions.tsx index 194bdd0684..9c130ef7a7 100644 --- a/web/components/cycles/quick-actions.tsx +++ b/web/components/cycles/quick-actions.tsx @@ -180,6 +180,7 @@ export const CycleQuickActions: React.FC = observer((props) => { }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/issues/issue-layouts/quick-action-dropdowns/all-issue.tsx b/web/components/issues/issue-layouts/quick-action-dropdowns/all-issue.tsx index b7825fc577..a616887495 100644 --- a/web/components/issues/issue-layouts/quick-action-dropdowns/all-issue.tsx +++ b/web/components/issues/issue-layouts/quick-action-dropdowns/all-issue.tsx @@ -181,6 +181,7 @@ export const AllIssueQuickActions: React.FC = observer((props }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/issues/issue-layouts/quick-action-dropdowns/archived-issue.tsx b/web/components/issues/issue-layouts/quick-action-dropdowns/archived-issue.tsx index 62b808b3f9..e6b3887c35 100644 --- a/web/components/issues/issue-layouts/quick-action-dropdowns/archived-issue.tsx +++ b/web/components/issues/issue-layouts/quick-action-dropdowns/archived-issue.tsx @@ -143,6 +143,7 @@ export const ArchivedIssueQuickActions: React.FC = observer(( }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/issues/issue-layouts/quick-action-dropdowns/cycle-issue.tsx b/web/components/issues/issue-layouts/quick-action-dropdowns/cycle-issue.tsx index a35de2735c..026d050ac5 100644 --- a/web/components/issues/issue-layouts/quick-action-dropdowns/cycle-issue.tsx +++ b/web/components/issues/issue-layouts/quick-action-dropdowns/cycle-issue.tsx @@ -201,6 +201,7 @@ export const CycleIssueQuickActions: React.FC = observer((pro }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/issues/issue-layouts/quick-action-dropdowns/draft-issue.tsx b/web/components/issues/issue-layouts/quick-action-dropdowns/draft-issue.tsx index bbeda85ce1..539b45cbd8 100644 --- a/web/components/issues/issue-layouts/quick-action-dropdowns/draft-issue.tsx +++ b/web/components/issues/issue-layouts/quick-action-dropdowns/draft-issue.tsx @@ -127,6 +127,7 @@ export const DraftIssueQuickActions: React.FC = observer((pro }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/issues/issue-layouts/quick-action-dropdowns/module-issue.tsx b/web/components/issues/issue-layouts/quick-action-dropdowns/module-issue.tsx index 6061c0bee3..7f86226267 100644 --- a/web/components/issues/issue-layouts/quick-action-dropdowns/module-issue.tsx +++ b/web/components/issues/issue-layouts/quick-action-dropdowns/module-issue.tsx @@ -198,6 +198,7 @@ export const ModuleIssueQuickActions: React.FC = observer((pr }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx b/web/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx index b74c9c57dd..ac84af5563 100644 --- a/web/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx +++ b/web/components/issues/issue-layouts/quick-action-dropdowns/project-issue.tsx @@ -191,6 +191,7 @@ export const ProjectIssueQuickActions: React.FC = observer((p }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/modules/quick-actions.tsx b/web/components/modules/quick-actions.tsx index 4cefa825fc..d7b7a23ef7 100644 --- a/web/components/modules/quick-actions.tsx +++ b/web/components/modules/quick-actions.tsx @@ -176,6 +176,7 @@ export const ModuleQuickActions: React.FC = observer((props) => { }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/pages/dropdowns/quick-actions.tsx b/web/components/pages/dropdowns/quick-actions.tsx index 9c311797ae..e218c1389a 100644 --- a/web/components/pages/dropdowns/quick-actions.tsx +++ b/web/components/pages/dropdowns/quick-actions.tsx @@ -104,6 +104,7 @@ export const PageQuickActions: React.FC = observer((props) => { item.action(); }} className="flex items-center gap-2" + disabled={item.disabled} > {item.icon && } {item.title} diff --git a/web/components/project/card.tsx b/web/components/project/card.tsx index 3d536a7c0d..5e94b1fb56 100644 --- a/web/components/project/card.tsx +++ b/web/components/project/card.tsx @@ -123,14 +123,14 @@ export const ProjectCard: React.FC = observer((props) => { action: handleOpenInNewTab, title: "Open in new tab", icon: ExternalLink, - shouldRender: project.is_member, + shouldRender: project.is_member && !isArchived, }, { key: "copy-link", action: handleCopyText, title: "Copy link", icon: LinkIcon, - shouldRender: true, + shouldRender: !isArchived, }, { key: "restore", diff --git a/web/components/views/quick-actions.tsx b/web/components/views/quick-actions.tsx index c9993169ba..f3f9353e56 100644 --- a/web/components/views/quick-actions.tsx +++ b/web/components/views/quick-actions.tsx @@ -103,6 +103,7 @@ export const ViewQuickActions: React.FC = observer((props) => { }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/workspace/views/default-view-quick-action.tsx b/web/components/workspace/views/default-view-quick-action.tsx index 5a58e1737d..669e03a716 100644 --- a/web/components/workspace/views/default-view-quick-action.tsx +++ b/web/components/workspace/views/default-view-quick-action.tsx @@ -104,6 +104,7 @@ export const DefaultWorkspaceViewQuickActions: React.FC = observer((props }, item.className )} + disabled={item.disabled} > {item.icon && }
diff --git a/web/components/workspace/views/quick-action.tsx b/web/components/workspace/views/quick-action.tsx index 3a67a95b91..97373b30f8 100644 --- a/web/components/workspace/views/quick-action.tsx +++ b/web/components/workspace/views/quick-action.tsx @@ -132,6 +132,7 @@ export const WorkspaceViewQuickActions: React.FC = observer((props) => { }, item.className )} + disabled={item.disabled} > {item.icon && }
From 4c78cd7c7e01d07f6da492795b2579db742eaa79 Mon Sep 17 00:00:00 2001 From: "M. Palanikannan" <73993394+Palanikannan1437@users.noreply.github.com> Date: Thu, 2 May 2024 18:22:00 +0530 Subject: [PATCH 4/4] fix: inbox create issue comment fixed (#4340) --- packages/editor/lite-text-editor/src/ui/index.tsx | 3 +++ .../issue-detail/issue-activity/comments/comment-create.tsx | 5 ++++- web/components/issues/issue-detail/issue-activity/root.tsx | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/editor/lite-text-editor/src/ui/index.tsx b/packages/editor/lite-text-editor/src/ui/index.tsx index fe94531103..6b22809d62 100644 --- a/packages/editor/lite-text-editor/src/ui/index.tsx +++ b/packages/editor/lite-text-editor/src/ui/index.tsx @@ -33,6 +33,7 @@ export interface ILiteTextEditor { }; tabIndex?: number; placeholder?: string | ((isFocused: boolean, value: string) => string); + id?: string; } const LiteTextEditor = (props: ILiteTextEditor) => { @@ -48,12 +49,14 @@ const LiteTextEditor = (props: ILiteTextEditor) => { tabIndex, mentionHandler, placeholder = "Add comment...", + id = "", } = props; const editor = useEditor({ onChange, initialValue, value, + id, editorClassName, restoreFile: fileHandler.restore, uploadFile: fileHandler.upload, diff --git a/web/components/issues/issue-detail/issue-activity/comments/comment-create.tsx b/web/components/issues/issue-detail/issue-activity/comments/comment-create.tsx index 0263a37e10..ae6e75c79c 100644 --- a/web/components/issues/issue-detail/issue-activity/comments/comment-create.tsx +++ b/web/components/issues/issue-detail/issue-activity/comments/comment-create.tsx @@ -18,10 +18,11 @@ type TIssueCommentCreate = { workspaceSlug: string; activityOperations: TActivityOperations; showAccessSpecifier?: boolean; + issueId: string; }; export const IssueCommentCreate: FC = (props) => { - const { workspaceSlug, projectId, activityOperations, showAccessSpecifier = false } = props; + const { workspaceSlug, projectId, issueId, activityOperations, showAccessSpecifier = false } = props; // refs const editorRef = useRef(null); // store hooks @@ -72,6 +73,8 @@ export const IssueCommentCreate: FC = (props) => { render={({ field: { value, onChange } }) => (

"} projectId={projectId} workspaceSlug={workspaceSlug} onEnterKeyPress={(e) => { diff --git a/web/components/issues/issue-detail/issue-activity/root.tsx b/web/components/issues/issue-detail/issue-activity/root.tsx index 982fe09521..d8de769c19 100644 --- a/web/components/issues/issue-detail/issue-activity/root.tsx +++ b/web/components/issues/issue-detail/issue-activity/root.tsx @@ -146,6 +146,7 @@ export const IssueActivity: FC = observer((props) => { /> {!disabled && ( = observer((props) => { /> {!disabled && (