diff --git a/src/addons/dragAndDrop/DraggableEventWrapper.js b/src/addons/dragAndDrop/DraggableEventWrapper.js index 0d48c7c1a..6cf8331f1 100644 --- a/src/addons/dragAndDrop/DraggableEventWrapper.js +++ b/src/addons/dragAndDrop/DraggableEventWrapper.js @@ -8,10 +8,10 @@ import { accessor } from '../../utils/propTypes' import { accessor as get } from '../../utils/accessors' import BigCalendar from '../../index' -const EventWrapper = BigCalendar.components.eventWrapper class DraggableEventWrapper extends React.Component { static contextTypes = { + components: PropTypes.object, draggableAccessor: accessor, resizableAccessor: accessor, } @@ -51,6 +51,10 @@ class DraggableEventWrapper extends React.Component { } render() { + const { components } = this.context + const EventWrapper = + components.eventWrapper || BigCalendar.components.eventWrapper + let { connectDragSource, connectTopDragSource, diff --git a/src/addons/dragAndDrop/withDragAndDrop.js b/src/addons/dragAndDrop/withDragAndDrop.js index 4d8b6faa4..3771c7b5b 100644 --- a/src/addons/dragAndDrop/withDragAndDrop.js +++ b/src/addons/dragAndDrop/withDragAndDrop.js @@ -52,10 +52,6 @@ try { * If you care about these corner cases, you can examine the `allDay` param suppled * in the callback to determine how the user dropped or resized the event. * - * Note: you cannot use custom `EventWrapper` components when using this HOC as it - * is overwritten here. - * - * * @param {*} Calendar * @param {*} backend */ diff --git a/stories/Calendar.js b/stories/Calendar.js index 505ecfbc0..144c10fc0 100644 --- a/stories/Calendar.js +++ b/stories/Calendar.js @@ -399,6 +399,19 @@ storiesOf('module.Calendar.week', module) ) }) + .add('add custom eventWrapper', () => { + return ( +
+ +
+ ) + }) .add('no duration', () => { return (
@@ -624,3 +637,21 @@ storiesOf('module.Calendar.week', module)
) }) + .add('draggable and resizable with custom eventWrapper', () => { + return ( +
+ +
+ ) + }) diff --git a/stories/customComponents.js b/stories/customComponents.js index 90f9508a5..582443ffe 100644 --- a/stories/customComponents.js +++ b/stories/customComponents.js @@ -44,6 +44,15 @@ const customComponents = { ) }, + eventWrapper: eventWrapperProps => { + const style = { + border: '4px solid', + borderColor: + eventWrapperProps.event.start.getHours() % 2 === 0 ? 'green' : 'red', + padding: '5px', + } + return
{eventWrapperProps.children}
+ }, } export default customComponents