Files
2026-01-01 15:25:19 +05:30

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;