diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-01 13:52:21 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-01 13:52:21 +0000 |
| commit | bac0228d21b7195065e9cddcc327ae33659c7bcc (patch) | |
| tree | 8f3016ae4533c8706d0c00a605d9b1d41968c2bc /components/data-table/view-mode-toggle.tsx | |
| parent | 2fdce8d7a57c792bba0ac36fa554dca9c9cc31e3 (diff) | |
(대표님) 20250601까지 작업사항
Diffstat (limited to 'components/data-table/view-mode-toggle.tsx')
| -rw-r--r-- | components/data-table/view-mode-toggle.tsx | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/components/data-table/view-mode-toggle.tsx b/components/data-table/view-mode-toggle.tsx new file mode 100644 index 00000000..fc07b4bf --- /dev/null +++ b/components/data-table/view-mode-toggle.tsx @@ -0,0 +1,91 @@ +"use client" + +import * as React from "react" +import { Button } from "@/components/ui/button" +import { Badge } from "@/components/ui/badge" +import { Infinity, Grid3X3, RotateCcw } from "lucide-react" +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip" + +interface ViewModeToggleProps { + isInfiniteMode: boolean + onSwitch: (pageSize: number) => void + className?: string +} + +export function ViewModeToggle({ isInfiniteMode, onSwitch, className }: ViewModeToggleProps) { + + const switchToPagination = React.useCallback(() => { + onSwitch(10) + }, [onSwitch]) + + + + // 새로고침 + const handleRefresh = React.useCallback(() => { + window.location.reload() + }, []) + + return ( + <div className={`flex items-center gap-2 ${className}`}> + {/* 현재 모드 표시 */} + <div className="flex items-center gap-2"> + {isInfiniteMode && ( + <Badge variant="default" className="bg-blue-100 text-blue-800 hover:bg-blue-200"> + <Infinity className="h-3 w-3 mr-1" /> + 무한 스크롤 모드 + </Badge> + ) } + </div> + + {/* 모드 전환 버튼 */} + <div className="flex items-center gap-1"> + {isInfiniteMode && ( + <TooltipProvider> + <Tooltip> + <TooltipTrigger asChild> + <Button + variant="outline" + size="sm" + onClick={switchToPagination} + className="h-8 px-2" + > + <Grid3X3 className="h-4 w-4 mr-1" /> + 페이지 모드 + </Button> + </TooltipTrigger> + <TooltipContent> + <p>페이지네이션 모드로 전환 (20개씩 표시)</p> + </TooltipContent> + </Tooltip> + </TooltipProvider> + ) } + + {/* 새로고침 버튼 */} + {isInfiniteMode && ( + <TooltipProvider> + <Tooltip> + <TooltipTrigger asChild> + <Button + variant="ghost" + size="sm" + onClick={handleRefresh} + className="h-8 w-8 p-0" + > + <RotateCcw className="h-4 w-4" /> + </Button> + </TooltipTrigger> + <TooltipContent> + <p>새로고침</p> + </TooltipContent> + </Tooltip> + </TooltipProvider> + )} + </div> + </div> + ) +}
\ No newline at end of file |
