@@ -14,6 +14,7 @@ import Image from "next/image";
1414import { useSearchParams } from "next/navigation" ;
1515import DevconnectCubeLogo from "./images/cube-logo.png" ;
1616import { eventShops } from "./zupass/event-shops-list" ;
17+ import { useIsMobile } from "lib/hooks/useIsMobile" ;
1718
1819export type ScheduleProps = {
1920 isCommunityCalendar ?: boolean ;
@@ -22,6 +23,7 @@ export type ScheduleProps = {
2223 setSelectedEvent : ( event : EventType | null ) => void ;
2324 setSelectedDay : ( day : string | null ) => void ;
2425 events : EventType [ ] ;
26+ viewMode : "list" | "grid" ;
2527} ;
2628
2729// Utility function for tracking placed nodes in the grid
@@ -53,7 +55,8 @@ const createPlacementTracker = () => {
5355// Compute event placements in the grid
5456const computeEventPlacements = (
5557 events : EventType [ ] ,
56- dateColumns : string [ ]
58+ dateColumns : string [ ] ,
59+ isMobile : boolean
5760) : any [ ] => {
5861 const placementTracker = createPlacementTracker ( ) ;
5962
@@ -122,13 +125,15 @@ const computeEventPlacements = (
122125 row ++ ;
123126 }
124127
128+ const spanRows = isMobile ? 1 : event . spanRows ? event . spanRows : 1 ;
129+
125130 // Store event with its grid position
126131 eventPlacements . push ( {
127132 event,
128133 timeblock : earliestTimeblock , // Use earliest timeblock for time display
129134 gridPosition : {
130135 row,
131- rowSpan : event . spanRows ? event . spanRows : 1 ,
136+ rowSpan : spanRows ? spanRows : 1 ,
132137 column : startColIndex + 1 , // +1 because CSS grid is 1-indexed
133138 duration,
134139 } ,
@@ -137,11 +142,11 @@ const computeEventPlacements = (
137142 } ) ;
138143
139144 // Add additional rows for special events
140- if ( event . spanRows ) {
141- for ( let i = 0 ; i < event . spanRows ; i ++ ) {
145+ if ( spanRows > 1 ) {
146+ for ( let i = 0 ; i < spanRows ; i ++ ) {
142147 ! placementTracker . placeItem ( row + i , startColIndex + 1 , duration ) ;
143148 }
144- row += event . spanRows - 1 ;
149+ row += spanRows - 1 ;
145150 }
146151 } ) ;
147152
@@ -154,14 +159,18 @@ const NewScheduleIndexInner = ({
154159 setSelectedEvent,
155160 setSelectedDay,
156161 events,
162+ viewMode,
157163} : ScheduleProps ) => {
158164 const searchParams = useSearchParams ( ) ;
159165 // const { selectedEvent, selectedDay, setSelectedEvent, setSelectedDay } = useCalendarStore()
160166 const eventRange = computeCalendarRange ( events ) ;
161167 const [ hoveredDate , setHoveredDate ] = useState < string | null > ( null ) ;
168+ const isMobile = useIsMobile ( 768 ) ;
162169
163170 // Compute event placements for the unified grid
164- const eventPlacements = computeEventPlacements ( events , eventRange ) ;
171+ const eventPlacements = computeEventPlacements ( events , eventRange , isMobile ) ;
172+
173+ console . log ( "eventPlacements" , eventPlacements ) ;
165174
166175 // Format date for display
167176 const formatDateHeader = ( dateStr : string ) => {
@@ -174,7 +183,7 @@ const NewScheduleIndexInner = ({
174183
175184 // Define shared column template for consistent alignment
176185 // const columnTemplate = `repeat(${eventRange.length}, minmax(175px, 1fr))`
177- const columnTemplate = `repeat(${ eventRange . length } , minmax(auto, 230px ))` ;
186+ const columnTemplate = `repeat(${ eventRange . length } , minmax(auto, 240px ))` ;
178187
179188 // Check if an event should be highlighted based on hovered date
180189 const isEventHighlighted = ( placement : any ) => {
@@ -249,7 +258,7 @@ const NewScheduleIndexInner = ({
249258 < div className = "hidden touch-only:block w-4 md:w-0 h-[1px]" > </ div >
250259 < div className = "w-full flex" >
251260 < div
252- className = "grid shrink-0"
261+ className = "grid shrink-0 min-w-full "
253262 style = { {
254263 gridTemplateColumns : columnTemplate ,
255264 gridTemplateRows : "auto 1fr" ,
0 commit comments