@@ -14,17 +14,22 @@ import {
1414 PopoverTrigger ,
1515} from "@/components/ui/popover" ;
1616import { useTasksByDate } from "@/hooks/use-tasks-by-date" ;
17- import { endOfWeek , format , startOfWeek } from "date-fns" ;
17+ import { endOfWeek , format , startOfWeek , addWeeks , subWeeks } from "date-fns" ;
1818import { enUS } from "date-fns/locale" ;
1919import { useState } from "react" ;
2020import { Task } from "./tasks/task" ;
21+ import { ChevronLeft , ChevronRight } from "lucide-react" ;
2122
2223function CalendarView ( ) {
2324 const [ isPopoverOpen , setIsPopoverOpen ] = useState ( false ) ;
2425 const [ selectedDate , setSelectedDate ] = useState < Date > ( new Date ( ) ) ;
2526 const weekStart = startOfWeek ( selectedDate , { weekStartsOn : 1 } ) ;
2627 const weekEnd = endOfWeek ( selectedDate , { weekStartsOn : 1 } ) ;
2728
29+ const isPreviousWeekBeforeCurrent =
30+ startOfWeek ( subWeeks ( selectedDate , 1 ) , { weekStartsOn : 1 } ) <
31+ startOfWeek ( new Date ( ) , { weekStartsOn : 1 } ) ;
32+
2833 // const [isAddTaskDialogOpen, setIsAddTaskDialogOpen] = useState(false);
2934 // const [addTaskDate, setAddTaskDate] = useState<Date | null>(null);
3035 // const [addTaskSectionId, setAddTaskSectionId] = useState<string | null>(null);
@@ -78,12 +83,21 @@ function CalendarView() {
7883 < >
7984 < div >
8085 < div className = "flex items-center gap-2 justify-center" >
86+ < Button
87+ variant = "ghost"
88+ size = "icon"
89+ disabled = { isPreviousWeekBeforeCurrent }
90+ onClick = { ( ) => setSelectedDate ( subWeeks ( selectedDate , 1 ) ) }
91+ >
92+ < ChevronLeft className = "h-4 w-4" />
93+ </ Button >
94+
8195 < div >
8296 < Popover open = { isPopoverOpen } onOpenChange = { setIsPopoverOpen } >
8397 < PopoverTrigger asChild >
8498 < Button
8599 variant = "outline"
86- className = "w-full justify-start text-left font-normal"
100+ className = "w-[256] justify-center font-normal"
87101 >
88102 { selectedDate ? (
89103 < div > { weekRange } </ div >
@@ -99,11 +113,20 @@ function CalendarView() {
99113 selected = { selectedDate }
100114 onSelect = { handleDateSelect }
101115 defaultMonth = { selectedDate }
116+ fromDate = { new Date ( ) }
102117 required
103118 />
104119 </ PopoverContent >
105120 </ Popover >
106121 </ div >
122+
123+ < Button
124+ variant = "ghost"
125+ size = "icon"
126+ onClick = { ( ) => setSelectedDate ( addWeeks ( selectedDate , 1 ) ) }
127+ >
128+ < ChevronRight className = "h-4 w-4" />
129+ </ Button >
107130 </ div >
108131 < div className = "py-5" >
109132 { tasksByDate &&
0 commit comments