@roo-ui/components
Version:
109 lines (86 loc) • 3.6 kB
JavaScript
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 _styledComponents = require('styled-components');
var _styledComponents2 = _interopRequireDefault(_styledComponents);
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 }; }
var CalendarDaysWrapper = (0, _styledComponents2.default)(_.Flex).withConfig({
displayName: 'CalendarDays__CalendarDaysWrapper'
})(['flex-wrap:wrap;margin-bottom:2px;margin-right:2px;']);
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;
;