diff options
Diffstat (limited to 'components/common/selectors/wbs-code/wbs-code-selector.tsx')
| -rw-r--r-- | components/common/selectors/wbs-code/wbs-code-selector.tsx | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/components/common/selectors/wbs-code/wbs-code-selector.tsx b/components/common/selectors/wbs-code/wbs-code-selector.tsx index b701d090..aa5a6a64 100644 --- a/components/common/selectors/wbs-code/wbs-code-selector.tsx +++ b/components/common/selectors/wbs-code/wbs-code-selector.tsx @@ -15,7 +15,7 @@ import { useState, useCallback, useMemo, useTransition } from 'react' import { Button } from '@/components/ui/button'
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
import { Input } from '@/components/ui/input'
-import { Search, Check } from 'lucide-react'
+import { Search, Check, X } from 'lucide-react'
import {
ColumnDef,
flexRender,
@@ -80,8 +80,20 @@ export function WbsCodeSelector({ // WBS 코드 선택 핸들러
const handleCodeSelect = useCallback(async (code: WbsCode) => {
+ // 이미 선택된 코드를 다시 선택하면 선택 해제
+ if (selectedCode && selectedCode.PROJ_NO === code.PROJ_NO && selectedCode.WBS_ELMT === code.WBS_ELMT) {
+ onCodeSelect(undefined as any) // 선택 해제를 위해 undefined 전달
+ setOpen(false)
+ return
+ }
+
onCodeSelect(code)
setOpen(false)
+ }, [onCodeSelect, selectedCode])
+
+ // 선택 해제 핸들러
+ const handleClearSelection = useCallback(() => {
+ onCodeSelect(undefined as any) // 선택 해제를 위해 undefined 전달
}, [onCodeSelect])
// 테이블 컬럼 정의
@@ -208,6 +220,17 @@ export function WbsCodeSelector({ <span className="font-mono text-sm">[{selectedCode.PROJ_NO}]</span>
<span className="font-mono text-sm">{selectedCode.WBS_ELMT}</span>
<span className="truncate flex-1 text-left">{selectedCode.WBS_ELMT_NM}</span>
+ <Button
+ variant="ghost"
+ size="sm"
+ className="h-4 w-4 p-0 hover:bg-destructive hover:text-destructive-foreground ml-1"
+ onClick={(e) => {
+ e.stopPropagation()
+ handleClearSelection()
+ }}
+ >
+ <X className="h-3 w-3" />
+ </Button>
</div>
) : (
<span className="text-muted-foreground">{placeholder}</span>
@@ -273,6 +296,11 @@ export function WbsCodeSelector({ )}
</TableCell>
))}
+ {selectedCode && selectedCode.PROJ_NO === row.original.PROJ_NO && selectedCode.WBS_ELMT === row.original.WBS_ELMT && (
+ <TableCell className="text-right">
+ <span className="text-xs text-muted-foreground">(선택됨)</span>
+ </TableCell>
+ )}
</TableRow>
))
) : (
|
