131 lines
6.5 KiB
JavaScript
131 lines
6.5 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
var _react = _interopRequireWildcard(require("react"));
|
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
var _DayCell = _interopRequireWildcard(require("../DayCell"));
|
|
var _dateFns = require("date-fns");
|
|
var _utils = require("../../utils");
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); } /* eslint-disable no-fallthrough */
|
|
function renderWeekdays(styles, dateOptions, weekdayDisplayFormat) {
|
|
const now = new Date();
|
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
className: styles.weekDays
|
|
}, (0, _dateFns.eachDayOfInterval)({
|
|
start: (0, _dateFns.startOfWeek)(now, dateOptions),
|
|
end: (0, _dateFns.endOfWeek)(now, dateOptions)
|
|
}).map((day, i) => /*#__PURE__*/_react.default.createElement("span", {
|
|
className: styles.weekDay,
|
|
key: i
|
|
}, (0, _dateFns.format)(day, weekdayDisplayFormat, dateOptions))));
|
|
}
|
|
class Month extends _react.PureComponent {
|
|
render() {
|
|
const now = new Date();
|
|
const {
|
|
displayMode,
|
|
focusedRange,
|
|
drag,
|
|
styles,
|
|
disabledDates,
|
|
disabledDay
|
|
} = this.props;
|
|
const minDate = this.props.minDate && (0, _dateFns.startOfDay)(this.props.minDate);
|
|
const maxDate = this.props.maxDate && (0, _dateFns.endOfDay)(this.props.maxDate);
|
|
const monthDisplay = (0, _utils.getMonthDisplayRange)(this.props.month, this.props.dateOptions, this.props.fixedHeight);
|
|
let ranges = this.props.ranges;
|
|
if (displayMode === 'dateRange' && drag.status) {
|
|
let {
|
|
startDate,
|
|
endDate
|
|
} = drag.range;
|
|
ranges = ranges.map((range, i) => {
|
|
if (i !== focusedRange[0]) return range;
|
|
return {
|
|
...range,
|
|
startDate,
|
|
endDate
|
|
};
|
|
});
|
|
}
|
|
const showPreview = this.props.showPreview && !drag.disablePreview;
|
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
className: styles.month,
|
|
style: this.props.style
|
|
}, this.props.showMonthName ? /*#__PURE__*/_react.default.createElement("div", {
|
|
className: styles.monthName
|
|
}, (0, _dateFns.format)(this.props.month, this.props.monthDisplayFormat, this.props.dateOptions)) : null, this.props.showWeekDays && renderWeekdays(styles, this.props.dateOptions, this.props.weekdayDisplayFormat), /*#__PURE__*/_react.default.createElement("div", {
|
|
className: styles.days,
|
|
onMouseLeave: this.props.onMouseLeave
|
|
}, (0, _dateFns.eachDayOfInterval)({
|
|
start: monthDisplay.start,
|
|
end: monthDisplay.end
|
|
}).map((day, index) => {
|
|
const isStartOfMonth = (0, _dateFns.isSameDay)(day, monthDisplay.startDateOfMonth);
|
|
const isEndOfMonth = (0, _dateFns.isSameDay)(day, monthDisplay.endDateOfMonth);
|
|
const isOutsideMinMax = minDate && (0, _dateFns.isBefore)(day, minDate) || maxDate && (0, _dateFns.isAfter)(day, maxDate);
|
|
const isDisabledSpecifically = disabledDates.some(disabledDate => (0, _dateFns.isSameDay)(disabledDate, day));
|
|
const isDisabledDay = disabledDay(day);
|
|
return /*#__PURE__*/_react.default.createElement(_DayCell.default, _extends({}, this.props, {
|
|
ranges: ranges,
|
|
day: day,
|
|
preview: showPreview ? this.props.preview : null,
|
|
isWeekend: (0, _dateFns.isWeekend)(day, this.props.dateOptions),
|
|
isToday: (0, _dateFns.isSameDay)(day, now),
|
|
isStartOfWeek: (0, _dateFns.isSameDay)(day, (0, _dateFns.startOfWeek)(day, this.props.dateOptions)),
|
|
isEndOfWeek: (0, _dateFns.isSameDay)(day, (0, _dateFns.endOfWeek)(day, this.props.dateOptions)),
|
|
isStartOfMonth: isStartOfMonth,
|
|
isEndOfMonth: isEndOfMonth,
|
|
key: index,
|
|
disabled: isOutsideMinMax || isDisabledSpecifically || isDisabledDay,
|
|
isPassive: !(0, _dateFns.isWithinInterval)(day, {
|
|
start: monthDisplay.startDateOfMonth,
|
|
end: monthDisplay.endDateOfMonth
|
|
}),
|
|
styles: styles,
|
|
onMouseDown: this.props.onDragSelectionStart,
|
|
onMouseUp: this.props.onDragSelectionEnd,
|
|
onMouseEnter: this.props.onDragSelectionMove,
|
|
dragRange: drag.range,
|
|
drag: drag.status
|
|
}));
|
|
})));
|
|
}
|
|
}
|
|
Month.defaultProps = {};
|
|
Month.propTypes = {
|
|
style: _propTypes.default.object,
|
|
styles: _propTypes.default.object,
|
|
month: _propTypes.default.object,
|
|
drag: _propTypes.default.object,
|
|
dateOptions: _propTypes.default.object,
|
|
disabledDates: _propTypes.default.array,
|
|
disabledDay: _propTypes.default.func,
|
|
preview: _propTypes.default.shape({
|
|
startDate: _propTypes.default.object,
|
|
endDate: _propTypes.default.object
|
|
}),
|
|
showPreview: _propTypes.default.bool,
|
|
displayMode: _propTypes.default.oneOf(['dateRange', 'date']),
|
|
minDate: _propTypes.default.object,
|
|
maxDate: _propTypes.default.object,
|
|
ranges: _propTypes.default.arrayOf(_DayCell.rangeShape),
|
|
focusedRange: _propTypes.default.arrayOf(_propTypes.default.number),
|
|
onDragSelectionStart: _propTypes.default.func,
|
|
onDragSelectionEnd: _propTypes.default.func,
|
|
onDragSelectionMove: _propTypes.default.func,
|
|
onMouseLeave: _propTypes.default.func,
|
|
monthDisplayFormat: _propTypes.default.string,
|
|
weekdayDisplayFormat: _propTypes.default.string,
|
|
dayDisplayFormat: _propTypes.default.string,
|
|
showWeekDays: _propTypes.default.bool,
|
|
showMonthName: _propTypes.default.bool,
|
|
fixedHeight: _propTypes.default.bool
|
|
};
|
|
var _default = exports.default = Month; |