UNPKG

@roo-ui/components

Version:

107 lines (84 loc) 3.68 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 _templateObject = _taggedTemplateLiteral(['\n flex-wrap: wrap;\n margin-bottom: 2px;\n margin-right: 2px;\n'], ['\n flex-wrap: wrap;\n margin-bottom: 2px;\n margin-right: 2px;\n']); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _isEqual = require('lodash/isEqual'); var _isEqual2 = _interopRequireDefault(_isEqual); var _ = require('../../../'); var _CalendarDay = require('../CalendarDay'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } var CalendarDaysWrapper = _.Flex.extend(_templateObject); var getCustomDateProps = function getCustomDateProps(disabledDates, interactiveDisabledDates, isInRange, day) { var isDisabled = disabledDates.some(function (disabledDate) { return (0, _isEqual2.default)(String(disabledDate), String(day.date)); }); var props = { selected: day.selected || interactiveDisabledDates && day.selectable, highlighted: isInRange(day.date), selectable: day.selectable }; if (isDisabled) { props.selectable = false; props.highlighted = false; props.disabled = !interactiveDisabledDates; } return props; }; var CalendarDays = function CalendarDays(_ref) { var weeks = _ref.weeks, month = _ref.month, year = _ref.year, getDateProps = _ref.getDateProps, disabledDates = _ref.disabledDates, interactiveDisabledDates = _ref.interactiveDisabledDates, onMouseEnterOfDay = _ref.onMouseEnterOfDay, isInRange = _ref.isInRange; return _react2.default.createElement( CalendarDaysWrapper, null, weeks.map(function (week) { return week.map(function (day, index) { if (!day) { return _react2.default.createElement(_CalendarDay.CalendarEmptyDay, { key: '' + year + month + index }) // eslint-disable-line react/no-array-index-key ; } return _react2.default.createElement( _CalendarDay.CalendarDay, _extends({ key: '' + year + month + index // eslint-disable-line react/no-array-index-key }, getDateProps({ dateObj: day, onMouseEnter: function onMouseEnter() { return onMouseEnterOfDay(day); } }), getCustomDateProps(disabledDates, interactiveDisabledDates, isInRange, day)), day.date.getDate() ); }); }) ); }; CalendarDays.defaultProps = { disabledDates: [], interactiveDisabledDates: false, isInRange: function isInRange() {}, onMouseEnterOfDay: function onMouseEnterOfDay() {} }; CalendarDays.propTypes = { month: _propTypes2.default.number.isRequired, year: _propTypes2.default.number.isRequired, weeks: _propTypes2.default.arrayOf(_propTypes2.default.array).isRequired, getDateProps: _propTypes2.default.func.isRequired, disabledDates: _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(Date)), interactiveDisabledDates: _propTypes2.default.bool, onMouseEnterOfDay: _propTypes2.default.func, isInRange: _propTypes2.default.func }; exports.default = CalendarDays;