react-calendar
Version:
Ultimate calendar for your React app.
51 lines (50 loc) • 2.73 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importDefault(require("react"));
var prop_types_1 = __importDefault(require("prop-types"));
var date_utils_1 = require("@wojtekmaj/date-utils");
var WeekNumber_1 = __importDefault(require("./WeekNumber"));
var Flex_1 = __importDefault(require("../Flex"));
var dates_1 = require("../shared/dates");
var propTypes_1 = require("../shared/propTypes");
function WeekNumbers(props) {
var activeStartDate = props.activeStartDate, calendarType = props.calendarType, onClickWeekNumber = props.onClickWeekNumber, onMouseLeave = props.onMouseLeave, showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;
var numberOfWeeks = (function () {
if (showFixedNumberOfWeeks) {
return 6;
}
var numberOfDays = (0, date_utils_1.getDaysInMonth)(activeStartDate);
var startWeekday = (0, dates_1.getDayOfWeek)(activeStartDate, calendarType);
var days = numberOfDays - (7 - startWeekday);
return 1 + Math.ceil(days / 7);
})();
var dates = (function () {
var year = (0, date_utils_1.getYear)(activeStartDate);
var monthIndex = (0, date_utils_1.getMonth)(activeStartDate);
var day = (0, date_utils_1.getDate)(activeStartDate);
var result = [];
for (var index = 0; index < numberOfWeeks; index += 1) {
result.push((0, dates_1.getBeginOfWeek)(new Date(year, monthIndex, day + index * 7), calendarType));
}
return result;
})();
var weekNumbers = dates.map(function (date) { return (0, dates_1.getWeekNumber)(date, calendarType); });
return (react_1.default.createElement(Flex_1.default, { className: "react-calendar__month-view__weekNumbers", count: numberOfWeeks, direction: "column", onFocus: onMouseLeave, onMouseOver: onMouseLeave, style: { flexBasis: 'calc(100% * (1 / 8)', flexShrink: 0 } }, weekNumbers.map(function (weekNumber, weekIndex) {
var date = dates[weekIndex];
if (!date) {
throw new Error('date is not defined');
}
return (react_1.default.createElement(WeekNumber_1.default, { key: weekNumber, date: date, onClickWeekNumber: onClickWeekNumber, weekNumber: weekNumber }));
})));
}
exports.default = WeekNumbers;
WeekNumbers.propTypes = {
activeStartDate: prop_types_1.default.instanceOf(Date).isRequired,
calendarType: propTypes_1.isCalendarType,
onClickWeekNumber: prop_types_1.default.func,
onMouseLeave: prop_types_1.default.func,
showFixedNumberOfWeeks: prop_types_1.default.bool,
};