Skip to content

Commit 2ff6942

Browse files
committed
time table - exposed container classname
1 parent 42eaa0d commit 2ff6942

File tree

1 file changed

+53
-47
lines changed

1 file changed

+53
-47
lines changed

library/src/components/timetable/TimeTable.tsx

Lines changed: 53 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
type onTimeRangeSelectedType,
3434
} from "./TimeTableSelectionStore"
3535
import { getStartAndEndSlot, useGroupRows } from "./useGoupRows"
36+
import { twMerge } from "tailwind-merge"
3637

3738
export interface TimeSlotBooking {
3839
title: string
@@ -177,6 +178,9 @@ export interface LPTimeTableProps<
177178
* For those who require to start the week on Sunday, this can be set to true.
178179
*/
179180
weekStartsOnSunday?: boolean
181+
182+
className?: string
183+
style?: React.CSSProperties
180184
}
181185

182186
const nowbarUpdateIntervall = 1000 * 60 // 1 minute
@@ -232,6 +236,8 @@ const LPTimeTableImpl = <G extends TimeTableGroup, I extends TimeSlotBooking>({
232236
dateHeaderTextFormat,
233237
weekStartsOnSunday = false,
234238
disableMessages = false,
239+
className,
240+
style,
235241
}: LPTimeTableProps<G, I>) => {
236242
// if we have viewType of days, we need to round the start and end date to the start and end of the day
237243
const { setMessage, translatedMessage } = useTimeTableMessage(
@@ -456,57 +462,57 @@ const LPTimeTableImpl = <G extends TimeTableGroup, I extends TimeSlotBooking>({
456462
/>
457463
)}
458464
</div>
459-
<div className="size-full relative">
460-
<TimeTableIdentProvider ident={storeIdent}>
461-
<div
462-
className="overflow-auto relative"
463-
style={{
464-
height: `calc(${height} - ${inlineMessageRef.current?.clientHeight}px)`,
465-
}}
466-
ref={intersectionContainerRef}
465+
466+
<TimeTableIdentProvider ident={storeIdent}>
467+
<div
468+
className={twMerge("overflow-auto relative", className)}
469+
style={{
470+
height: `calc(${height} - ${inlineMessageRef.current?.clientHeight}px)`,
471+
...style,
472+
}}
473+
ref={intersectionContainerRef}
474+
>
475+
<table
476+
className={
477+
"table w-full table-fixed border-separate border-spacing-0 select-none overflow-auto"
478+
}
479+
ref={tableRef}
467480
>
468-
<table
469-
className={
470-
"table w-full table-fixed border-separate border-spacing-0 select-none overflow-auto"
481+
<LPTimeTableHeader
482+
slotsArray={slotsArray}
483+
columnWidth={columnWidth}
484+
groupHeaderColumnWidth={groupHeaderColumnWidth}
485+
startDate={startDate}
486+
endDate={endDate}
487+
viewType={viewType}
488+
timeFrameDay={timeFrameDay}
489+
showTimeSlotHeader={
490+
showTimeSlotHeader === undefined ||
491+
showTimeSlotHeader === null
492+
? viewType === "hours"
493+
: showTimeSlotHeader
471494
}
472-
ref={tableRef}
473-
>
474-
<LPTimeTableHeader
475-
slotsArray={slotsArray}
476-
columnWidth={columnWidth}
477-
groupHeaderColumnWidth={groupHeaderColumnWidth}
478-
startDate={startDate}
479-
endDate={endDate}
480-
viewType={viewType}
481-
timeFrameDay={timeFrameDay}
482-
showTimeSlotHeader={
483-
showTimeSlotHeader === undefined ||
484-
showTimeSlotHeader === null
485-
? viewType === "hours"
486-
: showTimeSlotHeader
495+
dateHeaderTextFormat={dateHeaderTextFormat}
496+
weekStartsOnSunday={weekStartsOnSunday}
497+
locale={locale}
498+
ref={tableHeaderRef}
499+
/>
500+
<tbody ref={tableBodyRef} className="table-fixed">
501+
<TimeTableRows<G, I>
502+
entries={entries}
503+
selectedTimeSlotItem={selectedTimeSlotItem}
504+
onTimeSlotItemClick={onTimeSlotItemClick}
505+
onGroupClick={onGroupClick}
506+
groupRows={groupRows}
507+
intersectionContainerRef={
508+
intersectionContainerRef
487509
}
488-
dateHeaderTextFormat={dateHeaderTextFormat}
489-
weekStartsOnSunday={weekStartsOnSunday}
490-
locale={locale}
491-
ref={tableHeaderRef}
510+
headerRef={tableHeaderRef}
492511
/>
493-
<tbody ref={tableBodyRef} className="table-fixed">
494-
<TimeTableRows<G, I>
495-
entries={entries}
496-
selectedTimeSlotItem={selectedTimeSlotItem}
497-
onTimeSlotItemClick={onTimeSlotItemClick}
498-
onGroupClick={onGroupClick}
499-
groupRows={groupRows}
500-
intersectionContainerRef={
501-
intersectionContainerRef
502-
}
503-
headerRef={tableHeaderRef}
504-
/>
505-
</tbody>
506-
</table>
507-
</div>
508-
</TimeTableIdentProvider>
509-
</div>
512+
</tbody>
513+
</table>
514+
</div>
515+
</TimeTableIdentProvider>
510516
</>
511517
)
512518
}

0 commit comments

Comments
 (0)