refactor: issues folder structure
This commit is contained in:
parent
7e92efee23
commit
8b1bf53831
44 changed files with 249 additions and 324 deletions
|
|
@ -13,8 +13,7 @@ import { IssueViewContextProvider } from "contexts/issue-view.context";
|
|||
// components
|
||||
import CyclesListView from "components/project/cycles/list-view";
|
||||
import CyclesBoardView from "components/project/cycles/board-view";
|
||||
import { CreateUpdateIssueModal } from "components/issues";
|
||||
import ConfirmIssueDeletion from "components/project/issues/confirm-issue-deletion";
|
||||
import { CreateUpdateIssueModal, DeleteIssueModal } from "components/issues";
|
||||
import ExistingIssuesListModal from "components/common/existing-issues-list-modal";
|
||||
import CycleDetailSidebar from "components/project/cycles/cycle-detail-sidebar";
|
||||
import View from "components/core/view";
|
||||
|
|
@ -38,6 +37,7 @@ import {
|
|||
PROJECT_ISSUES_LIST,
|
||||
PROJECT_MEMBERS,
|
||||
PROJECT_DETAILS,
|
||||
CYCLE_DETAILS,
|
||||
} from "constants/fetch-keys";
|
||||
|
||||
const SingleCycle: React.FC<UserAuth> = (props) => {
|
||||
|
|
@ -77,6 +77,18 @@ const SingleCycle: React.FC<UserAuth> = (props) => {
|
|||
: null
|
||||
);
|
||||
|
||||
const { data: cycleDetails } = useSWR(
|
||||
cycleId ? CYCLE_DETAILS(cycleId as string) : null,
|
||||
workspaceSlug && projectId && cycleId
|
||||
? () =>
|
||||
cycleServices.getCycleDetails(
|
||||
workspaceSlug as string,
|
||||
projectId as string,
|
||||
cycleId as string
|
||||
)
|
||||
: null
|
||||
);
|
||||
|
||||
const { data: cycleIssues } = useSWR<CycleIssueResponse[]>(
|
||||
workspaceSlug && projectId && cycleId ? CYCLE_ISSUES(cycleId as string) : null,
|
||||
workspaceSlug && projectId && cycleId
|
||||
|
|
@ -181,7 +193,7 @@ const SingleCycle: React.FC<UserAuth> = (props) => {
|
|||
issues={issues?.results.filter((i) => !i.issue_cycle) ?? []}
|
||||
handleOnSubmit={handleAddIssuesToCycle}
|
||||
/>
|
||||
<ConfirmIssueDeletion
|
||||
<DeleteIssueModal
|
||||
handleClose={() => setDeleteIssue(undefined)}
|
||||
isOpen={!!deleteIssue}
|
||||
data={issues?.results.find((issue) => issue.id === deleteIssue)}
|
||||
|
|
@ -200,7 +212,7 @@ const SingleCycle: React.FC<UserAuth> = (props) => {
|
|||
label={
|
||||
<>
|
||||
<CyclesIcon className="h-3 w-3" />
|
||||
{cycles?.find((c) => c.id === cycleId)?.name}
|
||||
{cycleDetails?.name}
|
||||
</>
|
||||
}
|
||||
className="ml-1.5"
|
||||
|
|
@ -287,7 +299,7 @@ const SingleCycle: React.FC<UserAuth> = (props) => {
|
|||
</div>
|
||||
)}
|
||||
<CycleDetailSidebar
|
||||
cycle={cycles?.find((c) => c.id === (cycleId as string))}
|
||||
cycle={cycleDetails}
|
||||
isOpen={cycleSidebar}
|
||||
cycleIssues={cycleIssues ?? []}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -14,11 +14,15 @@ import { requiredAdmin, requiredAuth } from "lib/auth";
|
|||
// layouts
|
||||
import AppLayout from "layouts/app-layout";
|
||||
// components
|
||||
import AddAsSubIssue from "components/project/issues/issue-detail/add-as-sub-issue";
|
||||
import IssueDetailSidebar from "components/project/issues/issue-detail/issue-detail-sidebar";
|
||||
import AddIssueComment from "components/project/issues/issue-detail/comment/issue-comment-section";
|
||||
import IssueActivitySection from "components/project/issues/issue-detail/activity";
|
||||
import { IssueDescriptionForm, SubIssueList, CreateUpdateIssueModal } from "components/issues";
|
||||
import {
|
||||
IssueDescriptionForm,
|
||||
SubIssuesList,
|
||||
CreateUpdateIssueModal,
|
||||
IssueDetailsSidebar,
|
||||
IssueActivitySection,
|
||||
AddComment,
|
||||
SubIssuesListModal,
|
||||
} from "components/issues";
|
||||
// ui
|
||||
import { Loader, CustomMenu } from "components/ui";
|
||||
import { Breadcrumbs } from "components/breadcrumbs";
|
||||
|
|
@ -52,7 +56,7 @@ const defaultValues = {
|
|||
const IssueDetailsPage: NextPage<UserAuth> = (props) => {
|
||||
// states
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const [isAddAsSubIssueOpen, setIsAddAsSubIssueOpen] = useState(false);
|
||||
const [subIssuesListModal, setSubIssuesListModal] = useState(false);
|
||||
const [preloadedData, setPreloadedData] = useState<
|
||||
(Partial<IIssue> & { actionType: "createIssue" | "edit" | "delete" }) | undefined
|
||||
>(undefined);
|
||||
|
|
@ -211,10 +215,10 @@ const IssueDetailsPage: NextPage<UserAuth> = (props) => {
|
|||
}}
|
||||
/>
|
||||
)}
|
||||
{isAddAsSubIssueOpen && (
|
||||
<AddAsSubIssue
|
||||
isOpen={isAddAsSubIssueOpen}
|
||||
setIsOpen={setIsAddAsSubIssueOpen}
|
||||
{subIssuesListModal && (
|
||||
<SubIssuesListModal
|
||||
isOpen={subIssuesListModal}
|
||||
handleClose={() => setSubIssuesListModal(false)}
|
||||
parent={issueDetails}
|
||||
/>
|
||||
)}
|
||||
|
|
@ -276,7 +280,7 @@ const IssueDetailsPage: NextPage<UserAuth> = (props) => {
|
|||
/>
|
||||
<div className="mt-2">
|
||||
{issueId && workspaceSlug && projectId && subIssues?.length > 0 ? (
|
||||
<SubIssueList
|
||||
<SubIssuesList
|
||||
issues={subIssues}
|
||||
parentIssue={issueDetails}
|
||||
projectId={projectId?.toString()}
|
||||
|
|
@ -309,7 +313,7 @@ const IssueDetailsPage: NextPage<UserAuth> = (props) => {
|
|||
</CustomMenu.MenuItem>
|
||||
<CustomMenu.MenuItem
|
||||
onClick={() => {
|
||||
setIsAddAsSubIssueOpen(true);
|
||||
setSubIssuesListModal(true);
|
||||
setPreloadedData({
|
||||
parent: issueDetails.id,
|
||||
actionType: "createIssue",
|
||||
|
|
@ -329,11 +333,11 @@ const IssueDetailsPage: NextPage<UserAuth> = (props) => {
|
|||
issueActivities={issueActivities || []}
|
||||
mutate={mutateIssueActivities}
|
||||
/>
|
||||
<AddIssueComment mutate={mutateIssueActivities} />
|
||||
<AddComment mutate={mutateIssueActivities} />
|
||||
</div>
|
||||
</div>
|
||||
<div className="basis-1/3 space-y-5 border-l p-5">
|
||||
<IssueDetailSidebar
|
||||
<IssueDetailsSidebar
|
||||
control={control}
|
||||
issueDetail={issueDetails}
|
||||
submitChanges={submitChanges}
|
||||
|
|
|
|||
|
|
@ -13,10 +13,8 @@ import AppLayout from "layouts/app-layout";
|
|||
// contexts
|
||||
import { IssueViewContextProvider } from "contexts/issue-view.context";
|
||||
// components
|
||||
import ListView from "components/project/issues/list-view";
|
||||
import BoardView from "components/project/issues/BoardView";
|
||||
import ConfirmIssueDeletion from "components/project/issues/confirm-issue-deletion";
|
||||
import { CreateUpdateIssueModal } from "components/issues";
|
||||
import BoardView from "components/issues/board-view";
|
||||
import { CreateUpdateIssueModal, DeleteIssueModal, IssuesListView } from "components/issues";
|
||||
import View from "components/core/view";
|
||||
// ui
|
||||
import { Spinner, EmptySpace, EmptySpaceItem, HeaderButton } from "components/ui";
|
||||
|
|
@ -99,7 +97,7 @@ const ProjectIssues: NextPage<UserAuth> = (props) => {
|
|||
handleClose={() => setIsOpen(false)}
|
||||
data={selectedIssue}
|
||||
/>
|
||||
<ConfirmIssueDeletion
|
||||
<DeleteIssueModal
|
||||
handleClose={() => setDeleteIssue(undefined)}
|
||||
isOpen={!!deleteIssue}
|
||||
data={projectIssues?.results.find((issue) => issue.id === deleteIssue)}
|
||||
|
|
@ -110,7 +108,7 @@ const ProjectIssues: NextPage<UserAuth> = (props) => {
|
|||
</div>
|
||||
) : projectIssues.count > 0 ? (
|
||||
<>
|
||||
<ListView
|
||||
<IssuesListView
|
||||
issues={projectIssues?.results.filter((p) => p.parent === null) ?? []}
|
||||
handleEditIssue={handleEditIssue}
|
||||
userAuth={props}
|
||||
|
|
|
|||
|
|
@ -18,10 +18,9 @@ import { IssueViewContextProvider } from "contexts/issue-view.context";
|
|||
import ExistingIssuesListModal from "components/common/existing-issues-list-modal";
|
||||
import ModulesBoardView from "components/project/modules/board-view";
|
||||
import ModulesListView from "components/project/modules/list-view";
|
||||
import ConfirmIssueDeletion from "components/project/issues/confirm-issue-deletion";
|
||||
import ModuleDetailSidebar from "components/project/modules/module-detail-sidebar";
|
||||
import ConfirmModuleDeletion from "components/project/modules/confirm-module-deletion";
|
||||
import { CreateUpdateIssueModal } from "components/issues";
|
||||
import { CreateUpdateIssueModal, DeleteIssueModal } from "components/issues";
|
||||
import View from "components/core/view";
|
||||
// ui
|
||||
import { CustomMenu, EmptySpace, EmptySpaceItem, Spinner } from "components/ui";
|
||||
|
|
@ -46,7 +45,7 @@ import {
|
|||
import { NextPageContext } from "next";
|
||||
// fetch-keys
|
||||
import {
|
||||
MODULE_DETAIL,
|
||||
MODULE_DETAILS,
|
||||
MODULE_ISSUES,
|
||||
MODULE_LIST,
|
||||
PROJECT_ISSUES_LIST,
|
||||
|
|
@ -96,8 +95,8 @@ const SingleModule: React.FC<UserAuth> = (props) => {
|
|||
: null
|
||||
);
|
||||
|
||||
const { data: moduleDetail } = useSWR<IModule>(
|
||||
MODULE_DETAIL,
|
||||
const { data: moduleDetails } = useSWR<IModule>(
|
||||
moduleId ? MODULE_DETAILS(moduleId as string) : null,
|
||||
workspaceSlug && projectId
|
||||
? () =>
|
||||
modulesService.getModuleDetails(
|
||||
|
|
@ -181,9 +180,9 @@ const SingleModule: React.FC<UserAuth> = (props) => {
|
|||
};
|
||||
|
||||
const handleDeleteModule = () => {
|
||||
if (!moduleDetail) return;
|
||||
if (!moduleDetails) return;
|
||||
|
||||
setSelectedModuleForDelete({ ...moduleDetail, actionType: "delete" });
|
||||
setSelectedModuleForDelete({ ...moduleDetails, actionType: "delete" });
|
||||
setModuleDeleteModal(true);
|
||||
};
|
||||
|
||||
|
|
@ -208,7 +207,7 @@ const SingleModule: React.FC<UserAuth> = (props) => {
|
|||
issues={issues?.results.filter((i) => !i.issue_module) ?? []}
|
||||
handleOnSubmit={handleAddIssuesToModule}
|
||||
/>
|
||||
<ConfirmIssueDeletion
|
||||
<DeleteIssueModal
|
||||
handleClose={() => setDeleteIssue(undefined)}
|
||||
isOpen={!!deleteIssue}
|
||||
data={moduleIssuesArray?.find((issue) => issue.id === deleteIssue)}
|
||||
|
|
@ -226,7 +225,7 @@ const SingleModule: React.FC<UserAuth> = (props) => {
|
|||
breadcrumbs={
|
||||
<Breadcrumbs>
|
||||
<BreadcrumbItem
|
||||
title={`${moduleDetail?.project_detail.name ?? "Project"} Modules`}
|
||||
title={`${moduleDetails?.project_detail.name ?? "Project"} Modules`}
|
||||
link={`/${workspaceSlug}/projects/${projectId}/modules`}
|
||||
/>
|
||||
</Breadcrumbs>
|
||||
|
|
@ -236,7 +235,7 @@ const SingleModule: React.FC<UserAuth> = (props) => {
|
|||
label={
|
||||
<>
|
||||
<RectangleGroupIcon className="h-3 w-3" />
|
||||
{modules?.find((c) => c.id === moduleId)?.name}
|
||||
{moduleDetails?.name}
|
||||
</>
|
||||
}
|
||||
className="ml-1.5"
|
||||
|
|
@ -323,7 +322,7 @@ const SingleModule: React.FC<UserAuth> = (props) => {
|
|||
</div>
|
||||
)}
|
||||
<ModuleDetailSidebar
|
||||
module={modules?.find((m) => m.id === moduleId)}
|
||||
module={moduleDetails}
|
||||
isOpen={moduleSidebar}
|
||||
moduleIssues={moduleIssues}
|
||||
handleDeleteModule={handleDeleteModule}
|
||||
|
|
|
|||
|
|
@ -13,11 +13,7 @@ import { requiredAdmin } from "lib/auth";
|
|||
// layouts
|
||||
import SettingsLayout from "layouts/settings-layout";
|
||||
// components
|
||||
import ConfirmStateDeletion from "components/project/issues/BoardView/state/confirm-state-delete";
|
||||
import {
|
||||
CreateUpdateStateInline,
|
||||
StateGroup,
|
||||
} from "components/project/issues/BoardView/state/create-update-state-inline";
|
||||
import { CreateUpdateStateInline, DeleteStateModal, StateGroup } from "components/states";
|
||||
// ui
|
||||
import { Loader } from "components/ui";
|
||||
import { BreadcrumbItem, Breadcrumbs } from "components/breadcrumbs";
|
||||
|
|
@ -67,7 +63,7 @@ const StatesSettings: NextPage<TStateSettingsProps> = (props) => {
|
|||
|
||||
return (
|
||||
<>
|
||||
<ConfirmStateDeletion
|
||||
<DeleteStateModal
|
||||
isOpen={!!selectDeleteState}
|
||||
data={states?.find((state) => state.id === selectDeleteState) ?? null}
|
||||
onClose={() => setSelectDeleteState(null)}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue