Skip to content

Commit 77760aa

Browse files
authored
feat: pass resource prop to DayColumnWrapper
Closes bigcalendar#2607
1 parent 621b8f1 commit 77760aa

6 files changed

Lines changed: 1747 additions & 1544 deletions

File tree

src/DayColumn.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ class DayColumn extends React.Component {
139139
selecting && 'rbc-slot-selecting'
140140
)}
141141
slotMetrics={slotMetrics}
142+
resource={resource}
142143
>
143144
{slotMetrics.groups.map((grp, idx) => (
144145
<TimeSlotGroup

stories/Calendar.stories.js

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@ import { action } from '@storybook/addon-actions'
44
import demoEvents from './resources/events'
55
import { Calendar } from '../src'
66

7-
import { events, Calendar as BaseCalendar, Views } from './helpers'
7+
import {
8+
events,
9+
Calendar as BaseCalendar,
10+
Views,
11+
resourceEvents,
12+
resources,
13+
} from './helpers'
814

915
import createEvents from './helpers/createEvents'
1016
import customComponents from './resources/customComponents'
@@ -101,3 +107,25 @@ CustomNoAgendaEventsLabel.args = {
101107
noEventsInRange: 'There are no special events in this range [test message]',
102108
},
103109
}
110+
111+
export const CustomDayColumnWrapper = Template.bind({})
112+
CustomDayColumnWrapper.storyName = 'add custom dayColumnWrapper'
113+
CustomDayColumnWrapper.args = {
114+
defaultView: Views.DAY,
115+
events: resourceEvents,
116+
resources: resources,
117+
resourceAccessor: 'resourceId',
118+
resourceIdAccessor: 'id',
119+
resourceTitleAccessor: 'name',
120+
components: {
121+
dayColumnWrapper: customComponents.dayColumnWrapper,
122+
},
123+
}
124+
CustomDayColumnWrapper.parameters = {
125+
docs: {
126+
description: {
127+
story:
128+
'The custom DayColumnWrapper allows you to add your own custom logic when rendering a Day Column.',
129+
},
130+
},
131+
}

stories/props/components.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const components = useMemo(() => ({
1313
eventWrapper: MyEventWrapper,
1414
eventContainerWrapper: MyEventContainerWrapper,
1515
dateCellWrapper: MyDateCellWrapper,
16+
dayColumnWrapper: MyDayColumnWrapper,
1617
timeSlotWrapper: MyTimeSlotWrapper,
1718
timeGutterHeader: MyTimeGutterWrapper,
1819
resourceHeader: MyResourceHeader,
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import React from 'react'
2+
3+
const DayColumnWrapper = ({ children, className, style, innerRef }) => {
4+
return (
5+
<div className={className} style={style} ref={innerRef}>
6+
{children}
7+
</div>
8+
)
9+
}
10+
11+
export default React.forwardRef((dayColumnWrapperProps, ref) => {
12+
const redBorder = dayColumnWrapperProps.resource % 2 === 0
13+
const style = {
14+
borderColor: redBorder ? 'red' : '#fff',
15+
borderStyle: 'solid',
16+
borderWidth: '1px',
17+
}
18+
19+
return (
20+
<DayColumnWrapper {...dayColumnWrapperProps} style={style} innerRef={ref} />
21+
)
22+
})

stories/resources/customComponents.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react'
22
import { action } from '@storybook/addon-actions'
3+
import CustomDayColumnWrapper from './CustomDayColumnWrapper'
34

45
const customComponents = {
56
dateCellWrapper: (dateCellWrapperProps) => {
@@ -27,6 +28,7 @@ const customComponents = {
2728
</div>
2829
)
2930
},
31+
dayColumnWrapper: CustomDayColumnWrapper,
3032
timeSlotWrapper: (timeSlotWrapperProps) => {
3133
// Show different styles at arbitrary time
3234
const hasCustomInfo = timeSlotWrapperProps.value

0 commit comments

Comments
 (0)