Skip to content

Commit 2dc3780

Browse files
[WEB-2568] chore: minor improvements related to issue identifier and issue modal.
1 parent b1dccf3 commit 2dc3780

File tree

9 files changed

+48
-22
lines changed

9 files changed

+48
-22
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from "./issue-identifier";
22
export * from "./issue-properties-activity";
3+
export * from "./issue-type-switcher";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { observer } from "mobx-react";
2+
// store hooks
3+
import { useIssueDetail } from "@/hooks/store";
4+
// plane web components
5+
import { IssueIdentifier } from "@/plane-web/components/issues";
6+
7+
export type TIssueTypeSwitcherProps = {
8+
issueId: string;
9+
disabled: boolean;
10+
};
11+
12+
export const IssueTypeSwitcher: React.FC<TIssueTypeSwitcherProps> = observer((props) => {
13+
const { issueId } = props;
14+
// store hooks
15+
const {
16+
issue: { getIssueById },
17+
} = useIssueDetail();
18+
// derived values
19+
const issue = getIssueById(issueId);
20+
21+
if (!issue || !issue.project_id) return <></>;
22+
23+
return <IssueIdentifier issueId={issueId} projectId={issue.project_id} size="md" />;
24+
});

web/core/components/issues/issue-detail/main-content.tsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import { useEffect, useState } from "react";
44
import { observer } from "mobx-react";
5-
// types
6-
import { TIssue } from "@plane/types";
75
// components
86
import {
97
IssueActivity,
@@ -20,7 +18,7 @@ import { useIssueDetail, useUser } from "@/hooks/store";
2018
import useReloadConfirmations from "@/hooks/use-reload-confirmation";
2119
import useSize from "@/hooks/use-window-size";
2220
// plane web components
23-
import { IssueIdentifier } from "@/plane-web/components/issues";
21+
import { IssueTypeSwitcher } from "@/plane-web/components/issues";
2422
// types
2523
import { TIssueOperations } from "./root";
2624

@@ -68,8 +66,8 @@ export const IssueMainContent: React.FC<Props> = observer((props) => {
6866
/>
6967
)}
7068

71-
<div className="mb-2.5 flex items-center gap-4">
72-
<IssueIdentifier issueId={issueId} projectId={issue.project_id} size="md" />
69+
<div className="mb-2.5 flex items-center justify-between gap-4">
70+
<IssueTypeSwitcher issueId={issueId} disabled={isArchived || !isEditable} />
7371
<IssueUpdateStatus isSubmitting={isSubmitting} />
7472
</div>
7573

web/core/components/issues/issue-modal/base.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const CreateUpdateIssueModalBase: React.FC<IssuesModalProps> = observer((
3030
withDraftIssueWrapper = true,
3131
storeType: issueStoreFromProps,
3232
isDraft = false,
33+
fetchIssueDetails = true,
3334
} = props;
3435
const issueStoreType = useIssueStoreType();
3536

@@ -68,7 +69,8 @@ export const CreateUpdateIssueModalBase: React.FC<IssuesModalProps> = observer((
6869
setDescription(undefined);
6970
if (!workspaceSlug) return;
7071

71-
if (!projectId || issueId === undefined) {
72+
if (!projectId || issueId === undefined || !fetchIssueDetails) {
73+
// Set description to the issue description from the props if available
7274
setDescription(data?.description_html || "<p></p>");
7375
return;
7476
}

web/core/components/issues/issue-modal/form.tsx

+1-7
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,6 @@ export const IssueFormRoot: FC<IssueFormProps> = observer((props) => {
146146
useEffect(() => {
147147
const issueTypeId = watch("type_id");
148148

149-
// if data is present, set active type id to the type id of the issue
150-
if (data && data.type_id) {
151-
setValue("type_id", data.type_id, { shouldValidate: true });
152-
return;
153-
}
154-
155149
// if issue type id is present or project not available, return
156150
if (issueTypeId || !projectId) return;
157151

@@ -284,7 +278,7 @@ export const IssueFormRoot: FC<IssueFormProps> = observer((props) => {
284278
<IssueTypeSelect
285279
control={control}
286280
projectId={projectId}
287-
disabled={!!data?.id || !!data?.sourceIssueId}
281+
disabled={!!data?.sourceIssueId}
288282
handleFormChange={handleFormChange}
289283
/>
290284
)}

web/core/components/issues/issue-modal/modal.tsx

+9-5
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ export interface IssuesModalProps {
1919
withDraftIssueWrapper?: boolean;
2020
storeType?: EIssuesStoreType;
2121
isDraft?: boolean;
22+
fetchIssueDetails?: boolean;
2223
}
2324

24-
export const CreateUpdateIssueModal: React.FC<IssuesModalProps> = observer((props) => (
25-
<IssueModalProvider>
26-
<CreateUpdateIssueModalBase {...props} />
27-
</IssueModalProvider>
28-
));
25+
export const CreateUpdateIssueModal: React.FC<IssuesModalProps> = observer(
26+
(props) =>
27+
props.isOpen && (
28+
<IssueModalProvider>
29+
<CreateUpdateIssueModalBase {...props} />
30+
</IssueModalProvider>
31+
)
32+
);

web/core/components/issues/peek-overview/issue-detail.tsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { FC, useEffect } from "react";
22
import { observer } from "mobx-react";
3-
// store hooks
3+
// components
44
import { TIssueOperations } from "@/components/issues";
5+
// store hooks
56
import { useIssueDetail, useUser } from "@/hooks/store";
67
// hooks
78
import useReloadConfirmations from "@/hooks/use-reload-confirmation";
89
// plane web components
9-
import { IssueIdentifier } from "@/plane-web/components/issues";
10-
// components
10+
import { IssueTypeSwitcher } from "@/plane-web/components/issues";
11+
// local components
1112
import { IssueDescriptionInput } from "../description-input";
1213
import { IssueReaction } from "../issue-detail/reactions";
1314
import { IssueTitleInput } from "../title-input";
@@ -56,7 +57,7 @@ export const PeekOverviewIssueDetails: FC<IPeekOverviewIssueDetails> = observer(
5657

5758
return (
5859
<div className="space-y-2">
59-
<IssueIdentifier issueId={issueId} projectId={issue.project_id} size="md" />
60+
<IssueTypeSwitcher issueId={issueId} disabled={isArchived || disabled} />
6061
<IssueTitleInput
6162
workspaceSlug={workspaceSlug}
6263
projectId={issue.project_id}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from "./issue-identifier";
22
export * from "./issue-properties-activity";
3+
export * from "./issue-type-switcher";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "ce/components/issues/issue-details/issue-type-switcher";

0 commit comments

Comments
 (0)