summaryrefslogtreecommitdiff
path: root/components/data-table/view-mode-toggle.tsx
blob: fc07b4bf4f1f34a3c9633e26d0183e1af23b315f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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>
  )
}