1- import { useMemo } from 'react' ;
1+ import { useEffect , useMemo , useState } from 'react' ;
22
33import { RedirectType , redirect } from 'next/navigation' ;
44
55import { RoomResponse } from '@/api/dto/room' ;
6- import { nowExcludeTime } from '@/util' ;
6+ import { getGridCols , nowExcludeTime } from '@/util' ;
77import { formatDate } from 'date-fns' ;
88import { MoveLeft } from 'lucide-react' ;
99import { twMerge } from 'tailwind-merge' ;
@@ -16,6 +16,15 @@ interface TableSummaryProps {
1616
1717export default function TableSummary ( { date, dates, room } : TableSummaryProps ) {
1818 const today = useMemo ( nowExcludeTime , [ ] ) ;
19+ const [ cols , setCols ] = useState ( ( ) =>
20+ getGridCols ( typeof window !== 'undefined' ? window . innerWidth : 1200 ) ,
21+ ) ;
22+
23+ useEffect ( ( ) => {
24+ const onResize = ( ) => setCols ( getGridCols ( window . innerWidth ) ) ;
25+ window . addEventListener ( 'resize' , onResize ) ;
26+ return ( ) => window . removeEventListener ( 'resize' , onResize ) ;
27+ } , [ ] ) ;
1928
2029 return (
2130 < div className = "flex flex-col gap-3 rounded-t-2xl" >
@@ -37,28 +46,30 @@ export default function TableSummary({ date, dates, room }: TableSummaryProps) {
3746 </ div >
3847
3948 < div className = "flex" >
40- < div className = "min-w-28" />
41- { dates . map ( ( date ) => (
42- < div key = { date . getTime ( ) } className = "flex w-full flex-col items-center gap-1" >
43- < div
44- className = { twMerge (
45- 'text-xs font-bold text-zinc-500' ,
46- today . getTime ( ) === date . getTime ( ) && 'text-classpick-500' ,
47- ) }
48- >
49- { formatDate ( date , 'E' ) . toUpperCase ( ) }
50- </ div >
49+ < div className = "min-w-16" />
50+ < div className = "grid flex-1 min-[0px]:grid-cols-1 min-[420px]:grid-cols-2 min-[570px]:grid-cols-3 min-[768px]:grid-cols-2 min-[918px]:grid-cols-3 min-[1068px]:grid-cols-4 min-[1218px]:grid-cols-4" >
51+ { dates . slice ( 0 , cols ) . map ( ( date ) => (
52+ < div key = { date . getTime ( ) } className = "flex w-full flex-col items-center gap-1" >
53+ < div
54+ className = { twMerge (
55+ 'text-xs font-bold text-zinc-500' ,
56+ today . getTime ( ) === date . getTime ( ) && 'text-classpick-500' ,
57+ ) }
58+ >
59+ { formatDate ( date , 'E' ) . toUpperCase ( ) }
60+ </ div >
5161
52- < span
53- className = { twMerge (
54- 'flex size-11 items-center justify-center text-2xl font-bold text-neutral-700' ,
55- today . getTime ( ) === date . getTime ( ) && 'bg-classpick-500 rounded-full text-white' ,
56- ) }
57- >
58- { date . getDate ( ) }
59- </ span >
60- </ div >
61- ) ) }
62+ < span
63+ className = { twMerge (
64+ 'flex size-11 items-center justify-center text-2xl font-bold text-neutral-700' ,
65+ today . getTime ( ) === date . getTime ( ) && 'bg-classpick-500 rounded-full text-white' ,
66+ ) }
67+ >
68+ { date . getDate ( ) }
69+ </ span >
70+ </ div >
71+ ) ) }
72+ </ div >
6273 </ div >
6374 </ div >
6475 ) ;
0 commit comments