diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-30 08:28:13 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-30 08:28:13 +0000 |
| commit | 5b6313f16f508882a0ea67716b7dbaa1c6967f04 (patch) | |
| tree | 3d1d8dafea2f31274ace3fbda08333e889e06d1c /lib/menu-list/table/initialize-button.tsx | |
| parent | 3f0fad18483a5c800c79c5e33946d9bb384c10e2 (diff) | |
(대표님) 20250630 16시 - 유저 도메인별 라우터 분리와 보안성검토 대응
Diffstat (limited to 'lib/menu-list/table/initialize-button.tsx')
| -rw-r--r-- | lib/menu-list/table/initialize-button.tsx | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/menu-list/table/initialize-button.tsx b/lib/menu-list/table/initialize-button.tsx new file mode 100644 index 00000000..1b8a2458 --- /dev/null +++ b/lib/menu-list/table/initialize-button.tsx @@ -0,0 +1,42 @@ +// app/evcp/menu-list/components/initialize-button.tsx + +"use client"; + +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { RefreshCw } from "lucide-react"; +import { toast } from "sonner"; +import { initializeMenuAssignments } from "../servcie"; + +export function InitializeButton() { + const [isLoading, setIsLoading] = useState(false); + + const handleInitialize = async () => { + setIsLoading(true); + try { + const result = await initializeMenuAssignments(); + + if (result.success) { + toast.success(result.message); + } else { + toast.error(result.message); + } + } catch (error) { + toast.error("메뉴 초기화 중 오류가 발생했습니다."); + } finally { + setIsLoading(false); + } + }; + + return ( + <Button + onClick={handleInitialize} + disabled={isLoading} + variant="outline" + size="sm" + > + <RefreshCw className={`h-4 w-4 mr-2 ${isLoading ? 'animate-spin' : ''}`} /> + 메뉴 초기화 + </Button> + ); +}
\ No newline at end of file |
