UNPKG

react-calendar

Version:

Ultimate calendar for your React app.

51 lines (50 loc) 2.73 kB
"use strict"; 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, };