From b2eab805e98ef4ab2139be6933135a1c00702504 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Thu, 2 Feb 2023 18:04:13 +0530 Subject: [PATCH] refactor: modules and states folder structure --- apps/app/components/command-palette/index.tsx | 5 +- apps/app/components/issues/index.ts | 1 + apps/app/components/issues/modal.tsx | 18 +- apps/app/components/issues/sidebar.tsx | 4 +- .../modules/board-view/index.tsx | 2 +- .../modules/board-view/single-board.tsx | 0 .../delete-module-modal.tsx} | 4 +- apps/app/components/modules/form.tsx | 128 ++++++++ apps/app/components/modules/index.ts | 10 + .../index.tsx => modules/list-view.tsx} | 4 +- apps/app/components/modules/modal.tsx | 170 +++++++++++ .../modules/module-link-modal.tsx | 4 +- apps/app/components/modules/select/index.ts | 3 + .../select}/select-lead.tsx | 12 +- .../select}/select-members.tsx | 12 +- .../select}/select-status.tsx | 3 +- .../modules/sidebar-select/index.ts | 3 + .../sidebar-select}/select-lead.tsx | 4 +- .../sidebar-select}/select-members.tsx | 4 +- .../sidebar-select}/select-status.tsx | 4 +- .../index.tsx => modules/sidebar.tsx} | 24 +- .../modules/single-module-card.tsx | 13 +- .../create-update-module-modal/index.tsx | 273 ------------------ .../[projectId]/modules/[moduleId].tsx | 10 +- .../projects/[projectId]/modules/index.tsx | 2 +- 25 files changed, 371 insertions(+), 346 deletions(-) rename apps/app/components/{project => }/modules/board-view/index.tsx (98%) rename apps/app/components/{project => }/modules/board-view/single-board.tsx (100%) rename apps/app/components/{project/modules/confirm-module-deletion.tsx => modules/delete-module-modal.tsx} (97%) create mode 100644 apps/app/components/modules/form.tsx create mode 100644 apps/app/components/modules/index.ts rename apps/app/components/{project/modules/list-view/index.tsx => modules/list-view.tsx} (98%) create mode 100644 apps/app/components/modules/modal.tsx rename apps/app/components/{project => }/modules/module-link-modal.tsx (97%) create mode 100644 apps/app/components/modules/select/index.ts rename apps/app/components/{project/modules/create-update-module-modal => modules/select}/select-lead.tsx (91%) rename apps/app/components/{project/modules/create-update-module-modal => modules/select}/select-members.tsx (90%) rename apps/app/components/{project/modules/create-update-module-modal => modules/select}/select-status.tsx (93%) create mode 100644 apps/app/components/modules/sidebar-select/index.ts rename apps/app/components/{project/modules/module-detail-sidebar => modules/sidebar-select}/select-lead.tsx (98%) rename apps/app/components/{project/modules/module-detail-sidebar => modules/sidebar-select}/select-members.tsx (98%) rename apps/app/components/{project/modules/module-detail-sidebar => modules/sidebar-select}/select-status.tsx (94%) rename apps/app/components/{project/modules/module-detail-sidebar/index.tsx => modules/sidebar.tsx} (94%) rename apps/app/components/{project => }/modules/single-module-card.tsx (97%) delete mode 100644 apps/app/components/project/modules/create-update-module-modal/index.tsx diff --git a/apps/app/components/command-palette/index.tsx b/apps/app/components/command-palette/index.tsx index 441fb31fa..26dc252b2 100644 --- a/apps/app/components/command-palette/index.tsx +++ b/apps/app/components/command-palette/index.tsx @@ -20,9 +20,9 @@ import userService from "services/user.service"; // components import ShortcutsModal from "components/command-palette/shortcuts"; import { CreateProjectModal } from "components/project"; -import { CreateUpdateIssueModal } from "components/issues/modal"; +import { CreateUpdateIssueModal } from "components/issues"; +import { CreateUpdateModuleModal } from "components/modules"; import CreateUpdateCycleModal from "components/project/cycles/create-update-cycle-modal"; -import CreateUpdateModuleModal from "components/project/modules/create-update-module-modal"; import BulkDeleteIssuesModal from "components/common/bulk-delete-issues-modal"; // headless ui // helpers @@ -179,7 +179,6 @@ const CommandPalette: React.FC = () => { )} diff --git a/apps/app/components/issues/index.ts b/apps/app/components/issues/index.ts index ba8b85301..de602c2e1 100644 --- a/apps/app/components/issues/index.ts +++ b/apps/app/components/issues/index.ts @@ -1,5 +1,6 @@ export * from "./board-view"; export * from "./comment"; +export * from "./sidebar-select"; export * from "./activity"; export * from "./delete-issue-modal"; export * from "./description-form"; diff --git a/apps/app/components/issues/modal.tsx b/apps/app/components/issues/modal.tsx index 2bb588460..09ad6446b 100644 --- a/apps/app/components/issues/modal.tsx +++ b/apps/app/components/issues/modal.tsx @@ -16,8 +16,6 @@ import issuesService from "services/issues.service"; import useUser from "hooks/use-user"; import useToast from "hooks/use-toast"; // components -import { CreateUpdateStateModal } from "components/states"; -import CreateUpdateCycleModal from "components/project/cycles/create-update-cycle-modal"; import { IssueForm } from "components/issues"; // common import { renderDateFormat } from "helpers/date-time.helper"; @@ -206,15 +204,15 @@ export const CreateUpdateIssueModal: React.FC = ({ }; const handleFormSubmit = async (formData: Partial) => { - if (workspaceSlug && activeProject) { - const payload: Partial = { - ...formData, - target_date: formData.target_date ? renderDateFormat(formData.target_date ?? "") : null, - }; + if (!workspaceSlug || !activeProject) return; - if (!data) await createIssue(payload); - else await updateIssue(payload); - } + const payload: Partial = { + ...formData, + target_date: formData.target_date ? renderDateFormat(formData.target_date ?? "") : null, + }; + + if (!data) await createIssue(payload); + else await updateIssue(payload); }; return ( diff --git a/apps/app/components/issues/sidebar.tsx b/apps/app/components/issues/sidebar.tsx index 0c358f9a4..5868e884b 100644 --- a/apps/app/components/issues/sidebar.tsx +++ b/apps/app/components/issues/sidebar.tsx @@ -16,6 +16,7 @@ import useToast from "hooks/use-toast"; import issuesServices from "services/issues.service"; // components import { + DeleteIssueModal, SidebarAssigneeSelect, SidebarBlockedSelect, SidebarBlockerSelect, @@ -23,8 +24,7 @@ import { SidebarParentSelect, SidebarPrioritySelect, SidebarStateSelect, -} from "components/issues/sidebar-select"; -import { DeleteIssueModal } from "components/issues"; +} from "components/issues"; // ui import { Input, Button, Spinner, CustomDatePicker } from "components/ui"; // icons diff --git a/apps/app/components/project/modules/board-view/index.tsx b/apps/app/components/modules/board-view/index.tsx similarity index 98% rename from apps/app/components/project/modules/board-view/index.tsx rename to apps/app/components/modules/board-view/index.tsx index 4951f80af..95efa123a 100644 --- a/apps/app/components/project/modules/board-view/index.tsx +++ b/apps/app/components/modules/board-view/index.tsx @@ -13,7 +13,7 @@ import issuesService from "services/issues.service"; import useIssuesProperties from "hooks/use-issue-properties"; import useIssueView from "hooks/use-issue-view"; // components -import SingleBoard from "components/project/modules/board-view/single-board"; +import SingleBoard from "components/modules/board-view/single-board"; // ui import { Spinner } from "components/ui"; // types diff --git a/apps/app/components/project/modules/board-view/single-board.tsx b/apps/app/components/modules/board-view/single-board.tsx similarity index 100% rename from apps/app/components/project/modules/board-view/single-board.tsx rename to apps/app/components/modules/board-view/single-board.tsx diff --git a/apps/app/components/project/modules/confirm-module-deletion.tsx b/apps/app/components/modules/delete-module-modal.tsx similarity index 97% rename from apps/app/components/project/modules/confirm-module-deletion.tsx rename to apps/app/components/modules/delete-module-modal.tsx index df3f32fea..317f49a68 100644 --- a/apps/app/components/project/modules/confirm-module-deletion.tsx +++ b/apps/app/components/modules/delete-module-modal.tsx @@ -25,7 +25,7 @@ type Props = { data?: IModule; }; -const ConfirmModuleDeletion: React.FC = ({ isOpen, setIsOpen, data }) => { +export const DeleteModuleModal: React.FC = ({ isOpen, setIsOpen, data }) => { const [isDeleteLoading, setIsDeleteLoading] = useState(false); const router = useRouter(); @@ -152,5 +152,3 @@ const ConfirmModuleDeletion: React.FC = ({ isOpen, setIsOpen, data }) => ); }; - -export default ConfirmModuleDeletion; diff --git a/apps/app/components/modules/form.tsx b/apps/app/components/modules/form.tsx new file mode 100644 index 000000000..60fd93059 --- /dev/null +++ b/apps/app/components/modules/form.tsx @@ -0,0 +1,128 @@ +// react-hook-form +import { Controller, useForm } from "react-hook-form"; +// components +import { ModuleLeadSelect, ModuleMembersSelect, ModuleStatusSelect } from "components/modules"; +// ui +import { Button, CustomDatePicker, Input, TextArea } from "components/ui"; +// types +import { IModule } from "types"; + +type Props = { + handleFormSubmit: (values: Partial) => void; + handleClose: () => void; + status: boolean; +}; + +const defaultValues: Partial = { + name: "", + description: "", + status: null, + lead: null, + members_list: [], +}; + +export const ModuleForm: React.FC = ({ handleFormSubmit, handleClose, status }) => { + const { + register, + formState: { errors, isSubmitting }, + handleSubmit, + control, + reset, + } = useForm({ + defaultValues, + }); + + const handleCreateUpdateModule = async (formData: Partial) => { + await handleFormSubmit(formData); + + reset({ + ...defaultValues, + }); + }; + + return ( +
+
+

+ {status ? "Update" : "Create"} Module +

+
+
+ +
+
+