From e548101dd59d5f655e6468a7b91d22ffffc9bc65 Mon Sep 17 00:00:00 2001 From: SeongHwan Date: Mon, 15 Jun 2026 03:01:02 +0900 Subject: [PATCH 1/6] =?UTF-8?q?fix:=20=EC=95=8C=EB=B0=94=EC=83=9D=20?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=ED=99=88=20=EA=B7=BC=EB=AC=B4=EC=A4=91?= =?UTF-8?q?=EC=9D=B8=20=EA=B0=80=EA=B2=8C=20=EC=84=B9=EC=85=98=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=20=ED=95=84=ED=84=B0=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/workspace/ui/WorkingStoresList.tsx | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/src/features/user/home/workspace/ui/WorkingStoresList.tsx b/src/features/user/home/workspace/ui/WorkingStoresList.tsx index f8d54c19..0b8ae292 100644 --- a/src/features/user/home/workspace/ui/WorkingStoresList.tsx +++ b/src/features/user/home/workspace/ui/WorkingStoresList.tsx @@ -7,9 +7,6 @@ import { interface WorkingStoresListProps { title?: string - sortLabelLeft?: string - sortLabelRight?: string - selectedSort?: 'left' | 'right' stores: WorkingStoreItem[] onMoreClick?: () => void onJoinWorkspaceClick?: () => void @@ -17,9 +14,6 @@ interface WorkingStoresListProps { export function WorkingStoresList({ title = '근무중인 가게', - sortLabelLeft = '이름 순', - sortLabelRight = '근무 예정 순', - selectedSort = 'right', stores, onMoreClick, onJoinWorkspaceClick, @@ -30,23 +24,6 @@ export function WorkingStoresList({

{title}

-
-

- {sortLabelLeft} -

-

|

-

- {sortLabelRight} -

-
From 63b6abb487c80b3147bf5184621698877a59602f Mon Sep 17 00:00:00 2001 From: SeongHwan Date: Mon, 15 Jun 2026 03:06:25 +0900 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20=EB=8D=94=EB=B3=B4=EA=B8=B0=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EA=B0=80=204?= =?UTF-8?q?=EA=B0=9C=20=EC=9D=B4=EC=83=81=EC=9D=BC=EB=95=8C=EB=A7=8C=20?= =?UTF-8?q?=EB=82=98=ED=83=80=EB=82=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/user/home/workspace/ui/WorkingStoresList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/features/user/home/workspace/ui/WorkingStoresList.tsx b/src/features/user/home/workspace/ui/WorkingStoresList.tsx index 0b8ae292..0a6101bf 100644 --- a/src/features/user/home/workspace/ui/WorkingStoresList.tsx +++ b/src/features/user/home/workspace/ui/WorkingStoresList.tsx @@ -38,7 +38,7 @@ export function WorkingStoresList({
- + {stores.length >= 4 && } {onJoinWorkspaceClick ? ( + {menuItems && menuItems.length > 0 && ( +
+ + setIsMenuOpen(false)} + className="right-0 top-full mt-2" + /> +
+ )}
) } From 73ade4fa505795f4feaf853d0d3d8a59175717f6 Mon Sep 17 00:00:00 2001 From: SeongHwan Date: Tue, 16 Jun 2026 22:34:45 +0900 Subject: [PATCH 6/6] =?UTF-8?q?feat:=20=EB=8C=80=ED=83=80=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20=ED=94=8C=EB=A1=9C=EC=9A=B0=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/user/substitute-request/index.tsx | 38 +++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/pages/user/substitute-request/index.tsx b/src/pages/user/substitute-request/index.tsx index 0d21a8a8..b04e40e8 100644 --- a/src/pages/user/substitute-request/index.tsx +++ b/src/pages/user/substitute-request/index.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import { useEffect, useRef, useState } from 'react' import { useMutation, useQueryClient } from '@tanstack/react-query' import { useLocation, @@ -42,6 +42,7 @@ type SubstituteRequestLocationState = { direction?: SubstituteDirectionTab directionTab?: SubstituteDirectionTab receivedDto?: ReceivedSubstituteRequestDto + workspaceId?: number } function parseDirectionTab( @@ -129,6 +130,17 @@ export function SubstituteRequestPage() { }) const handleOpenCreate = () => { + const preselected = locationState?.workspaceId + ? workspaces.find(w => w.workspaceId === locationState.workspaceId) + : undefined + if (preselected) { + setCreateFlow({ + workspaceId: preselected.workspaceId, + storeName: preselected.businessName, + session: Date.now(), + }) + return + } if (workspaces.length === 1) { const only = workspaces[0]! setCreateFlow({ @@ -141,6 +153,25 @@ export function SubstituteRequestPage() { setStorePickerOpen(true) } + const autoOpenedCreateRef = useRef(false) + useEffect(() => { + if (autoOpenedCreateRef.current) return + if (workspacesLoading || !locationState?.workspaceId) return + autoOpenedCreateRef.current = true + handleOpenCreate() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [workspacesLoading, locationState?.workspaceId]) + + const clearWorkspacePreselect = () => { + if (!locationState?.workspaceId) return + const rest = { ...locationState } + delete rest.workspaceId + navigate(location.pathname + location.search, { + replace: true, + state: rest, + }) + } + const handleStoreConfirm = (workspaceId: number, storeName: string) => { setStorePickerOpen(false) setCreateFlow({ @@ -270,7 +301,10 @@ export function SubstituteRequestPage() { {createFlow != null ? ( setCreateFlow(null)} + onClose={() => { + setCreateFlow(null) + clearWorkspacePreselect() + }} storeName={createFlow.storeName} initialMonth={new Date()} workspaceId={createFlow.workspaceId}