UNPKG

react-sprucebot

Version:

React components for your Sprucebot Skill 💪🏼

940 lines (760 loc) 29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _moment = require("moment"); var _moment2 = _interopRequireDefault(_moment); var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); var _isEqual = require("lodash/isEqual"); var _isEqual2 = _interopRequireDefault(_isEqual); var _es6Tween = require("es6-tween"); var _Avatar = require("../Avatar/Avatar"); var _Avatar2 = _interopRequireDefault(_Avatar); var _Button = require("../Button/Button"); var _Button2 = _interopRequireDefault(_Button); var _Calendar = require("./Calendar"); var _Calendar2 = _interopRequireDefault(_Calendar); var _Pager = require("../Pager/Pager"); var _Pager2 = _interopRequireDefault(_Pager); var _Tabs = require("../Tabs/Tabs"); var _HorizontalWeek = require("./HorizontalWeek"); var _HorizontalWeek2 = _interopRequireDefault(_HorizontalWeek); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } (0, _es6Tween.autoPlay)(true); var getElementWidth = function getElementWidth(element) { return element && element.offsetWidth; }; var getElementHeight = function getElementHeight(element) { return element && element.offsetHeight; }; var BigCalendar = function (_Component) { _inherits(BigCalendar, _Component); function BigCalendar(props) { var _this2 = this; _classCallCheck(this, BigCalendar); var _this = _possibleConstructorReturn(this, (BigCalendar.__proto__ || Object.getPrototypeOf(BigCalendar)).call(this, props)); _this.componentDidMount = function () { //give things a sec to settle before recording sizes _this.refresh(); setTimeout(function () {}, 250); window.addEventListener("resize", _this.handleWindowResize); }; _this.componentWillUnmount = function () { window.removeEventListener("resize", _this.handleWindowResize); }; _this.setEvents = function (events) { _this.setState({ events: events }); }; _this.triggerRefresh = function () { _this.refresh(); }; _this.events = function () { return _this.state.events; }; _this.setView = function (view) { _this.handleChangeView(0); _this.tabs.setSelected(0, ".0"); }; _this.setMode = function (mode) { _this.setState({ mode: mode }); }; _this.setDate = function (selectedDate) { _this.setState({ selectedDate: selectedDate }); }; _this.generatePagerTitle = function (page) { var auth = _this.props.auth; var _this$state = _this.state, view = _this$state.view, selectedDate = _this$state.selectedDate; var title = void 0; if (view === "month") { title = (0, _moment2.default)(selectedDate).format("MMM YYYY"); } else if (view === "week") { var startOfWeek = (0, _moment2.default)(selectedDate).startOf("week"); var endOfWeek = (0, _moment2.default)(selectedDate).endOf("week"); if (startOfWeek.isSame(endOfWeek, "month")) { title = startOfWeek.format("MMM Do") + " - " + endOfWeek.format("Do"); } else { title = startOfWeek.format("MMM Do") + " - " + endOfWeek.format("MMM Do"); } } else if (view === "day") { var now = (0, _moment2.default)().tz(auth.Location.timezone).startOf("day"); var days = _moment2.default.tz(selectedDate, auth.Location.timezone).startOf("day").diff(now, "days"); switch (days) { case -1: title = "Yesterday"; break; case 0: title = "Today"; break; case 1: title = "Tomorrow"; break; default: title = (0, _moment2.default)(selectedDate).format("ddd, MMM Do"); break; } } return title; }; _this.getDesiredTeammateWrapperWidth = function () { if (!_this.calendarWrapper) { return "100%"; } var _this$state2 = _this.state, view = _this$state2.view, mode = _this$state2.mode; var teamDayViewWidth = _this.props.teamDayViewWidth; var calendarWrapperWidth = getElementWidth(_this.calendarWrapper); if (mode === "team" && view === "day") { // make it a little thinner than the screen return Math.min(calendarWrapperWidth - 20, teamDayViewWidth); } else if (mode === "team" && view === "week") { return "100%"; } else if (mode === "team" && view === "month") { return "100%"; } else if (mode === "user") { return calendarWrapperWidth; } return "auto"; }; _this.getDesiredScrollWidth = function () { //act like a normal div until loaded if (!_this.calendarWrapper) { return "100%"; } var _this$state3 = _this.state, view = _this$state3.view, mode = _this$state3.mode, teammates = _this$state3.teammates, transitioning = _this$state3.transitioning; var calendarWrapperWidth = getElementWidth(_this.calendarWrapper); var widthOfAllCalendars = 0; var minWidthOfAllCalendars = _this.getDesiredTeammateWrapperWidth() * teammates.length; document.querySelectorAll(".teammate_calendar__wrapper").forEach(function (wrapper) { widthOfAllCalendars += getElementWidth(wrapper); }); widthOfAllCalendars = Math.max(minWidthOfAllCalendars, widthOfAllCalendars); if (transitioning && view === "day") { return widthOfAllCalendars; } if (mode === "team" && view == "day") { return widthOfAllCalendars; } else if (view === "week") { return calendarWrapperWidth; } else if (view === "month") { return calendarWrapperWidth; } else if (mode === "user") { return calendarWrapperWidth; } }; _this.getDesiredScrollHeight = function () { //act like a normal div until loaded if (!_this.calendarWrapper) { return "auto"; } var _this$state4 = _this.state, mode = _this$state4.mode, view = _this$state4.view; if (mode === "team" && view === "week") { return "auto"; } else if (view === "month") { return "auto"; } var firstTeammateWrapper = document.querySelector(".teammate_calendar__wrapper"); if (!firstTeammateWrapper) { return "auto"; } return getElementHeight(firstTeammateWrapper) || "auto"; }; _this.handleChange = function () { _this.refresh(); }; _this.refresh = function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var triggerOnNavigate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var _this$state5, mode, view, teammates, selectedDate, optionsLoaded, _this$props, auth, onNavigate, fetchEvents, currentView, currentUser, startDate, endDate, options, eventsLoaded, _ref2, storeSchedule, events; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _this$state5 = _this.state, mode = _this$state5.mode, view = _this$state5.view, teammates = _this$state5.teammates, selectedDate = _this$state5.selectedDate, optionsLoaded = _this$state5.optionsLoaded; _this$props = _this.props, auth = _this$props.auth, onNavigate = _this$props.onNavigate, fetchEvents = _this$props.fetchEvents; currentView = view === "team_week" ? "week" : view; currentUser = teammates.find(function (teammate) { return teammate.User.id === auth.UserId; }); startDate = (0, _moment2.default)(selectedDate).startOf(currentView); endDate = (0, _moment2.default)(selectedDate).endOf(currentView); options = { mode: mode, startDate: startDate, endDate: endDate, view: currentView, teammates: mode === "user" ? currentUser : teammates }; eventsLoaded = _this.checkOptions(options); if (eventsLoaded) { _context.next = 17; break; } _this.setState({ optionsLoaded: [].concat(_toConsumableArray(optionsLoaded), [options]) }); triggerOnNavigate && onNavigate && onNavigate(options); _context.next = 13; return fetchEvents(options); case 13: _ref2 = _context.sent; storeSchedule = _ref2.storeSchedule; events = _ref2.events; _this.setState({ storeSchedule: storeSchedule, events: events }); case 17: case "end": return _context.stop(); } } }, _callee, _this2); })); return function () { return _ref.apply(this, arguments); }; }(); _this.checkOptions = function (options) { return _this.state.optionsLoaded.find(function (loaded) { return (0, _isEqual2.default)(loaded, options); }); }; _this.handlePagerChange = function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(page) { var view, diff, stepType; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: view = _this.state.view; diff = page - _this.state.currentPage; stepType = view !== "month" ? "days" : "months"; _context2.next = 5; return _this.setState(function (prevState) { return { currentPage: page, selectedDate: prevState.selectedDate.add(diff, stepType) }; }); case 5: _this.handleChange(); case 6: case "end": return _context2.stop(); } } }, _callee2, _this2); })); return function (_x2) { return _ref3.apply(this, arguments); }; }(); _this.handleChangeView = function () { var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(idx) { var _this$state6, mode, view, newView, movingToWeek; return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _this$state6 = _this.state, mode = _this$state6.mode, view = _this$state6.view; newView = _this.state.views[idx]; movingToWeek = mode === "user" && view !== "week" && newView === "week"; _context3.next = 5; return _this.setState({ view: newView, renderFirstCalendar: !movingToWeek }); case 5: // because month view does not show all teammates, if we are in team mode jumping OFF month view, lets // re-show team wrappers if (mode === "team" && view === "month" && newView !== "month") { _this.toggleShowOnCalendars(); } else if (mode === "user" && view !== "week" && newView === "week") { // week view is heavy, give dom a sec to render before rendering calendar _this.delayedRenderWeekView(); } _this.handleChange(); //trigger a refresh which causes, sizes to be recalculated. 500 delay for css transitions setTimeout(function () { _this.handleWindowResize(); }, 500); case 8: case "end": return _context3.stop(); } } }, _callee3, _this2); })); return function (_x3) { return _ref4.apply(this, arguments); }; }(); _this.delayedRenderWeekView = function () { setTimeout(function () { _this.setState({ renderFirstCalendar: true }); }, 100); }; _this.timeRange = function () { var _this$state7 = _this.state, selectedDate = _this$state7.selectedDate, storeSchedule = _this$state7.storeSchedule, events = _this$state7.events; var day = selectedDate.format("YYYY-MM-DD"); var combinedTimes = [].concat(_toConsumableArray(storeSchedule), _toConsumableArray(events.filter(function (event) { if (event.startTime && event.endTime) { return event; } }).map(function (event) { return { startTime: event.startTime, endTime: event.endTime }; }))); var earliest = false; var latest = false; if (combinedTimes.length !== 0) { combinedTimes.forEach(function (event) { var start = (0, _moment2.default)(day + " " + event.startTime).subtract(2, "hour"); var end = (0, _moment2.default)(day + " " + event.endTime).add(2, "hour"); if (!earliest || earliest.diff(start) > 0) { earliest = start; } if (!latest || latest.diff(end) < 0) { latest = end; } }); if (!earliest.isSame(day, "day")) { earliest = (0, _moment2.default)(day + " 00:00:00"); } if (!latest.isSame(day, "day")) { latest = (0, _moment2.default)(day + " 23:59:59"); } } else { earliest = (0, _moment2.default)(selectedDate).hour(7).minutes(0).seconds(0); latest = (0, _moment2.default)(selectedDate).hour(18).minutes(0).seconds(0); } return [earliest, latest]; }; _this.toggleShowOnCalendars = function () { // show teammates calendars one at a time var calendars = [].concat(_toConsumableArray(document.querySelectorAll(".teammate_calendar__wrapper"))); if (_this.props.auth) { calendars.shift(); } var delay = 100; var delayBump = 200; calendars.forEach(function (element) { setTimeout(function () { element.classList.toggle("hide"); }, delay); delay += delayBump; }); }; _this.jumpToTeamMode = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: if (!_this.state.transitioning) { _context4.next = 2; break; } return _context4.abrupt("return"); case 2: _context4.next = 4; return _this.setState({ transitioning: true, mode: "team", showAllTeammates: true, renderAllCalendars: true }); case 4: _this.toggleShowOnCalendars(); _this.handleChange(); setTimeout(function () { _this.setState({ transitioning: false }); }, 1000); case 7: case "end": return _context4.stop(); } } }, _callee4, _this2); })); _this.jumpToUserMode = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() { var view; return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: if (!_this.state.transitioning) { _context5.next = 2; break; } return _context5.abrupt("return"); case 2: //scroll calendar left new _es6Tween.Tween({ y: _this.calendarWrapper.scrollLeft }).to({ y: 0 }, 500).on("update", function (_ref7) { var y = _ref7.y; _this.calendarWrapper.scrollLeft = y; }).easing(_es6Tween.Easing.Quadratic.Out).start(); // when jumping to week view in user mode, delay render because it's heavy view = _this.state.view; //first give css transitions a sec to adjust the view _context5.next = 6; return _this.setState({ transitioning: true, mode: "user", renderFirstCalendar: view !== "week", showAllTeammates: view !== "week" }); case 6: if (view === "week") { _this.delayedRenderWeekView(); } // to hard on the client _this.toggleShowOnCalendars(); _this.handleChange(); setTimeout(function () { _this.setState({ renderAllCalendars: false, showAllTeammates: false, transitioning: false }); }, 500); case 10: case "end": return _context5.stop(); } } }, _callee5, _this2); })); _this.handleToggleMode = function () { var mode = _this.state.mode; switch (mode) { case "team": _this.jumpToUserMode(); break; default: _this.jumpToTeamMode(); break; } }; _this.handleWindowResize = function () { _this.setState({ resized: _this.state.resized++ }); }; _this.filterEvents = function (events, teammate) { var _this$state8 = _this.state, view = _this$state8.view, mode = _this$state8.mode; if (mode === "team" && view === "month") { return events; } var filteredEvents = events.filter(function (event) { return event.isUniversalEvent || event.userId === teammate.User.id; }); return filteredEvents; }; _this.applyClassNames = function (event) { return { className: "" + (event.className || "") }; }; _this.handleClickEvent = function (options) { var onClickEvent = _this.props.onClickEvent; onClickEvent && onClickEvent(options); }; _this.handleClickOpenSlot = function (options) { var onClickOpenSlot = _this.props.onClickOpenSlot; onClickOpenSlot && onClickOpenSlot(options); }; _this.handleDropEvent = function (_ref8) { var event = _ref8.event, start = _ref8.start, end = _ref8.end; var onDropEvent = _this.props.onDropEvent; onDropEvent && onDropEvent(event, start, end); }; _this.handleResizeEvent = function (resizeType, _ref9) { var event = _ref9.event, start = _ref9.start, end = _ref9.end; var onResizeEvent = _this.props.onResizeEvent; onResizeEvent && onResizeEvent(event, start, end); }; _this.handleCanDrag = function (event) { var canDrag = _this.props.canDrag; if (canDrag) { return canDrag(event); } }; _this.handleCanResize = function (event) { var canResize = _this.props.canResize; if (canResize) { return canResize(event); } }; _this.state = { currentPage: 0, view: props.defaultView, mode: props.defaultMode, renderFirstCalendar: true, // the first calendar is always the logged in user renderFirstEvents: true, // rendering events is slow, so we may defer loading them until later renderAllCalendars: false, renderAllEvents: true, showAllTeammates: props.defaultMode === "team", transitioning: false, selectedDate: (0, _moment2.default)(), earliestTime: null, latestTime: null, teammates: props.teammates ? props.teammates : [], views: props.supportedViews, resized: 0, events: [], // All events for current date range storeSchedule: [], // Hours store is open for selected date range, optionsLoaded: [] }; // Expected event structure: // const event = { // title: 'My favorite event', // className: 'shift', // start: new Date(), // end: new Date(), // allDay: true, // userId: id, // payload: { data preserved in callback } // } return _this; } //the earliest and latest time of all schedules _createClass(BigCalendar, [{ key: "render", value: function render() { var _this3 = this; var _props = this.props, auth = _props.auth, className = _props.className, supportedViews = _props.supportedViews, onClickOpenSlot = _props.onClickOpenSlot; var _state = this.state, selectedDate = _state.selectedDate, view = _state.view, teammates = _state.teammates, mode = _state.mode, transitioning = _state.transitioning, renderAllCalendars = _state.renderAllCalendars, showAllTeammates = _state.showAllTeammates, renderFirstCalendar = _state.renderFirstCalendar, events = _state.events, renderAllEvents = _state.renderAllEvents; // populate views to take into account team week var selectedView = view; var views = {}; supportedViews.forEach(function (view) { views[view] = true; }); views.team_week = _HorizontalWeek2.default; if (mode === "team" && view === "week") { selectedView = "team_week"; } var teammateWrapperWidth = this.getDesiredTeammateWrapperWidth(); var scrollWidth = this.getDesiredScrollWidth(); var scrollHeight = this.getDesiredScrollHeight(); // format times var formats = { // format times in left column timeGutterFormat: function timeGutterFormat(date) { return (0, _moment2.default)(date).format("h:mma"); } }; // setup start and end times var _timeRange = this.timeRange(), _timeRange2 = _slicedToArray(_timeRange, 2), min = _timeRange2[0], max = _timeRange2[1]; // configure react-sprucebot calendar var calendarProps = { view: selectedView, formats: formats, toolbar: false, date: selectedDate.toDate(), min: min.toDate(), max: max.toDate(), selectable: onClickOpenSlot && true }; var team = showAllTeammates ? teammates : [auth]; var classNames = (className || "") + " " + (mode === "team" ? "team" : "user") + " " + (transitioning ? "transitioning" : "") + " " + view; //filter authed user out and prepend if (view === "month") { team = [auth]; } else if (showAllTeammates && auth) { team = team.filter(function (teammate) { return teammate.User.id !== auth.User.id; }); team = [auth].concat(_toConsumableArray(team)); } debugger; return _react2.default.createElement( "div", { className: "big_calendar " + classNames }, _react2.default.createElement( _Tabs.Tabs, { ref: function ref(element) { return _this3.tabs = element; }, onChange: this.handleChangeView }, _react2.default.createElement(_Tabs.TabPane, { title: "Day" }), _react2.default.createElement(_Tabs.TabPane, { title: "Week" }), _react2.default.createElement(_Tabs.TabPane, { title: "Month" }) ), _react2.default.createElement( "div", { className: "calendar__controls" }, _react2.default.createElement(_Pager2.default, { infinite: true, onChange: this.handlePagerChange, titles: this.generatePagerTitle, jumpAmount: selectedView !== "month" ? 7 : 1, showStep: selectedView === "day" }), _react2.default.createElement( _Button2.default, { className: "toggle-mode", onClick: this.handleToggleMode }, mode === "team" ? "show just me" : "show team" ) ), _react2.default.createElement( "div", { className: "calendars__wrapper", ref: function ref(_ref11) { _this3.calendarWrapper = _ref11; } }, _react2.default.createElement( "div", { className: "calendar__scroll", style: { width: scrollWidth, height: scrollHeight } }, team.map(function (teammate, idx) { return _react2.default.createElement( "div", { key: "calendar-wrapper-" + teammate.User.id, className: "teammate_calendar__wrapper " + (idx === 0 ? "" : "hide"), style: { width: teammateWrapperWidth } }, !(view === "month" && mode === "team") && _react2.default.createElement( "div", { className: "avatar_wrapper" }, _react2.default.createElement( "span", null, _react2.default.createElement(_Avatar2.default, { top: true, user: teammate }), _react2.default.createElement( "span", { className: "calendar__teammate_name" }, teammate.User.casualName ) ) ), idx === 0 && view === "month" && mode === "team" && teammates.map(function (teammate) { return _react2.default.createElement( "div", { className: "avatar_wrapper" }, _react2.default.createElement( "span", null, _react2.default.createElement(_Avatar2.default, { top: true, user: teammate }), _react2.default.createElement( "span", { className: "calendar__teammate_name" }, teammate.User.casualName ) ) ); }), (idx === 0 && renderFirstCalendar || idx > 0 && renderAllCalendars) && _react2.default.createElement(_Calendar2.default, _extends({ className: "" + (idx === 0 && !renderFirstCalendar ? "hide" : ""), views: views, events: events ? _this3.filterEvents(events, teammate) : [], eventPropGetter: function eventPropGetter(event) { return _this3.applyClassNames(event); }, onSelectEvent: function onSelectEvent(event) { return _this3.handleClickEvent({ event: event, teammate: teammate, view: view, mode: mode }); }, onSelectSlot: function onSelectSlot(_ref10) { var start = _ref10.start, end = _ref10.end, action = _ref10.action; return _this3.handleClickOpenSlot({ start: start, end: end, action: action, teammate: teammate, view: view, mode: mode }); }, onEventDrop: _this3.handleDropEvent, onEventResize: _this3.handleResizeEvent, canDrag: _this3.handleCanDrag, canResize: _this3.handleCanResize, popup: selectedView === "month" }, calendarProps)) ); }) ) ) ); } }]); return BigCalendar; }(_react.Component); exports.default = BigCalendar; BigCalendar.propTypes = { auth: _propTypes2.default.object.isRequired, teammates: _propTypes2.default.array, supportedViews: _propTypes2.default.array.isRequired, //NOT IMPLEMENTED defaultView: _propTypes2.default.string.isRequired, supportedModes: _propTypes2.default.array.isRequired, //NOT IMPLEMENTED defaultMode: _propTypes2.default.string.isRequired, storeSchedule: _propTypes2.default.objectOf.isRequired, teamDayViewWidth: _propTypes2.default.number, handleClickEvent: _propTypes2.default.func, handleClickOpenSlot: _propTypes2.default.func, handleDropEvent: _propTypes2.default.func, handleResizeEvent: _propTypes2.default.func }; BigCalendar.defaultProps = { supportedViews: ["day", "week", "month"], //NOT IMPLEMENTED defaultView: "day", supportedModes: ["user", "team"], //NOT IMPLEMENTED defaultMode: "user", teamDayViewWidth: 250 };