@roo-ui/components
Version:
127 lines (105 loc) • 4.65 kB
JavaScript
'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 _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _dayzed = require('dayzed');
var _dayzed2 = _interopRequireDefault(_dayzed);
var _sub_days = require('date-fns/sub_days');
var _sub_days2 = _interopRequireDefault(_sub_days);
var _ = require('../');
var _2 = require('.');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var Calendar = function Calendar(_ref) {
var monthNames = _ref.monthNames,
weekdayNames = _ref.weekdayNames,
monthsToDisplay = _ref.monthsToDisplay,
stacked = _ref.stacked,
rest = _objectWithoutProperties(_ref, ['monthNames', 'weekdayNames', 'monthsToDisplay', 'stacked']);
return _react2.default.createElement(_dayzed2.default, _extends({}, rest, {
monthsToDisplay: monthsToDisplay,
render: function render(_ref2) {
var calendars = _ref2.calendars,
getBackProps = _ref2.getBackProps,
getForwardProps = _ref2.getForwardProps,
getDateProps = _ref2.getDateProps;
if (!calendars.length) return null;
return _react2.default.createElement(
_.Box,
{ position: 'relative' },
_react2.default.createElement(_2.CalendarNav, {
prevProps: getBackProps({ calendars: calendars }),
nextProps: getForwardProps({ calendars: calendars })
}),
_react2.default.createElement(
_.Flex,
{ flexWrap: 'wrap' },
calendars.map(function (calendar) {
return _react2.default.createElement(
_2.CalendarMonth,
{
key: '' + calendar.month + calendar.year,
monthsToDisplay: monthsToDisplay,
month: monthNames[calendar.month],
year: calendar.year,
stacked: stacked
},
_react2.default.createElement(
_2.CalendarWeekdays,
null,
weekdayNames.map(function (weekday) {
return _react2.default.createElement(
_2.CalendarWeekday,
{ key: '' + calendar.month + calendar.year + weekday },
weekday
);
})
),
_react2.default.createElement(
_2.CalendarDays,
null,
calendar.weeks.map(function (week) {
return week.map(function (day, index) {
if (!day) {
return _react2.default.createElement(_2.CalendarEmptyDay, { key: '' + calendar.year + calendar.month + index }) // eslint-disable-line react/no-array-index-key
;
}
return _react2.default.createElement(
_2.CalendarDay,
_extends({
key: '' + calendar.year + calendar.month + index // eslint-disable-line react/no-array-index-key
, selected: day.selected,
selectable: day.selectable
}, getDateProps({ dateObj: day })),
day.date.getDate()
);
});
})
)
);
})
)
);
}
}));
};
Calendar.defaultProps = {
monthsToDisplay: 1,
stacked: false,
minDate: (0, _sub_days2.default)(new Date(), 1),
monthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
weekdayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
};
Calendar.propTypes = _extends({}, _dayzed2.default.propTypes, {
monthsToDisplay: _propTypes2.default.number,
stacked: _propTypes2.default.bool,
minDate: _propTypes2.default.instanceOf(Date),
monthNames: _propTypes2.default.arrayOf(_propTypes2.default.string),
weekdayNames: _propTypes2.default.arrayOf(_propTypes2.default.string)
});
exports.default = Calendar;