From f5b6effeb3a4eb1e76cbb643481a65e4a3d65ef0 Mon Sep 17 00:00:00 2001 From: mind-one001 Date: Fri, 16 Oct 2026 11:00:13 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A4=80=EC=84=A4=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EA=B4=80=EB=A1=9C=20=EB=AF=B8=ED=91=9C=EC=B6=9C=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B8=ED=95=9C=20=EA=B8=B0=EB=8A=A5=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/dredging-detail-popup-page.tsx | 33 ++++------------ .../ui/dredging-registration-body.tsx | 39 ++++--------------- .../dredging-registration-mode-selector.tsx | 38 ++++++++++++++++++ 3 files changed, 53 insertions(+), 57 deletions(-) create mode 100644 apps/sn/src/features/dredging/ui/dredging-registration-mode-selector.tsx diff --git a/apps/sn/src/features/dredging/ui/dredging-detail-popup-page.tsx b/apps/sn/src/features/dredging/ui/dredging-detail-popup-page.tsx index 9bad04c3a..73558eab8 100644 --- a/apps/sn/src/features/dredging/ui/dredging-detail-popup-page.tsx +++ b/apps/sn/src/features/dredging/ui/dredging-detail-popup-page.tsx @@ -1,4 +1,5 @@ "use client"; +import { DredgingRegistrationModeSelector } from "./dredging-registration-mode-selector"; import { DREDGING_EXTERNAL_MODE } from "../model/disclosure"; import dynamic from "next/dynamic"; @@ -607,34 +608,16 @@ const DredgingDetailPopupPage = ({ className="card card-border !m-0 flex !min-h-[40rem] flex-1 flex-col overflow-hidden !p-0" data-testid="dredging-detail-photo-panel" > -
+

준설 사진

{editable ? ( - <> - - - + void changeRegistrationMode(mode)} + testIdPrefix="dredging-edit" + /> ) : null} {totalPhotoCount}/5장 diff --git a/apps/sn/src/features/dredging/ui/dredging-registration-body.tsx b/apps/sn/src/features/dredging/ui/dredging-registration-body.tsx index fa6956697..f970b5ce0 100644 --- a/apps/sn/src/features/dredging/ui/dredging-registration-body.tsx +++ b/apps/sn/src/features/dredging/ui/dredging-registration-body.tsx @@ -1,5 +1,6 @@ "use client"; +import { DredgingRegistrationModeSelector } from "./dredging-registration-mode-selector"; import { DREDGING_EXTERNAL_MODE } from "../model/disclosure"; import type { ComponentType } from "react"; import { FileUpload } from "@common/business_components/ui/file-upload"; @@ -239,38 +240,12 @@ export const DredgingRegistrationBody = ({ 촬영일과 GPS 정보를 확인합니다.

-
- - -
+ void changeRegistrationMode(activeGroup.id, mode)} + testIdPrefix="dredging-register" + />
{activeGroup.registrationMode === "PHOTO" ? ( diff --git a/apps/sn/src/features/dredging/ui/dredging-registration-mode-selector.tsx b/apps/sn/src/features/dredging/ui/dredging-registration-mode-selector.tsx new file mode 100644 index 000000000..758fff42c --- /dev/null +++ b/apps/sn/src/features/dredging/ui/dredging-registration-mode-selector.tsx @@ -0,0 +1,38 @@ +"use client"; + +import { useId } from "react"; +import type { DredgingRegistrationMode } from "../model/types"; + +type Props = { + value: DredgingRegistrationMode; + labels: Record; + onChange: (mode: DredgingRegistrationMode) => void; + testIdPrefix: string; +}; + +/** 업로드 실행 버튼과 구분되는 등록 방식 선택. 기존 전환 처리는 호출 화면이 담당한다. */ +export const DredgingRegistrationModeSelector = ({ + value, labels, onChange, testIdPrefix, +}: Props) => { + const name = useId(); + + return ( +
+ 등록 방식 + {(["PHOTO", "MANUAL"] as const).map((mode) => ( + + ))} +
+ ); +};