diff --git a/src/Calendar.js b/src/Calendar.js
index 477aba658..71828ed00 100644
--- a/src/Calendar.js
+++ b/src/Calendar.js
@@ -80,6 +80,11 @@ let Calendar = React.createClass({
*/
events: PropTypes.arrayOf(PropTypes.object),
+ /**
+ * An array of resource objects that map events to a specific resource
+ */
+ resources: PropTypes.arrayOf(PropTypes.object),
+
/**
* Callback fired when the `date` value changes.
*
@@ -439,7 +444,7 @@ let Calendar = React.createClass({
popup: false,
toolbar: true,
view: views.MONTH,
- views: [views.MONTH, views.WEEK, views.DAY, views.AGENDA],
+ views: [views.MONTH, views.WEEK, views.DAY, views.AGENDA, views.RESOURCE],
date: now,
step: 30,
diff --git a/src/DayColumn.js b/src/DayColumn.js
index 94a6e45f0..ee17a865e 100644
--- a/src/DayColumn.js
+++ b/src/DayColumn.js
@@ -57,6 +57,7 @@ let DaySlot = React.createClass({
dayWrapperComponent: elementType,
eventComponent: elementType,
eventWrapperComponent: elementType.isRequired,
+ resource: React.PropTypes.string,
},
getDefaultProps() {
@@ -304,6 +305,7 @@ let DaySlot = React.createClass({
slots,
start: startDate,
end: endDate,
+ resourceId: this.props.resource,
action
})
},
diff --git a/src/Resource.js b/src/Resource.js
new file mode 100644
index 000000000..e86a37dcd
--- /dev/null
+++ b/src/Resource.js
@@ -0,0 +1,42 @@
+import React from 'react';
+import dates from './utils/dates';
+import ResourceGrid from './ResourceGrid';
+import { navigate } from './utils/constants';
+
+const Resource = React.createClass({
+ propTypes: {
+ date: React.PropTypes.instanceOf(Date).isRequired
+ },
+
+ render() {
+ let { date, ...props } = this.props;
+ let { start, end } = Resource.range(date);
+
+ return (
+