UNPKG

pouncejs

Version:

A collection of UI components from Panther labs

127 lines (110 loc) 3.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _dayjs = _interopRequireDefault(require("dayjs")); var _chunk = _interopRequireDefault(require("lodash/chunk")); var _Flex = _interopRequireDefault(require("../Flex")); var _Box = _interopRequireDefault(require("../Box")); var _Day = _interopRequireDefault(require("./Day")); var _helpers = require("../../utils/helpers"); var DAYS = [{ abbr: 'Mo', name: 'Monday' }, { abbr: 'Tu', name: 'Tuesday' }, { abbr: 'We', name: 'Wednesday' }, { abbr: 'Th', name: 'Thursday' }, { abbr: 'Fr', name: 'Friday' }, { abbr: 'Sa', name: 'Saturday' }, { abbr: 'Su', name: 'Sunday' }]; var getWeekCount = function getWeekCount(year, month) { var firstDay = (0, _dayjs.default)().month(month).year(year).date(1); var daysCount = firstDay.daysInMonth(); var add = firstDay.day() === 0 ? 7 : firstDay.day(); return Math.ceil((daysCount + add) / 7); }; var Month = function Month(_ref) { var year = _ref.year, month = _ref.month, daysSelected = _ref.daysSelected, timezone = _ref.timezone, _ref$onDaySelect = _ref.onDaySelect, onDaySelect = _ref$onDaySelect === void 0 ? _helpers.noop : _ref$onDaySelect; var weeks = _react.default.useMemo(function () { var weekCount = getWeekCount(year, month); var monthDate = (0, _dayjs.default)().month(month).year(year).date(1); var daysCount = monthDate.daysInMonth(); var start = monthDate.day(); var days = Array(weekCount * 7); var step = start === 0 ? 7 : start; for (var index = 0; index <= daysCount; index++) { days[index + step - 2] = index; } return (0, _chunk.default)(days, 7); }, [year, month]); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Flex.default, { role: "row", justify: "space-around", mb: 2, py: 2, borderTop: "1px solid", borderBottom: "1px solid", borderColor: "navyblue-300" }, DAYS.map(function (day) { return /*#__PURE__*/_react.default.createElement(_Box.default, { role: "columnheader", key: day.abbr }, /*#__PURE__*/_react.default.createElement(_Box.default, { as: "abbr", textDecoration: "none", fontWeight: "bold", fontSize: "small", title: day.name }, day.abbr)); }))), /*#__PURE__*/_react.default.createElement(_Box.default, { display: "table", sx: { borderCollapse: 'separate', borderSpacing: '0 2px' } }, /*#__PURE__*/_react.default.createElement(_Box.default, { display: "table-row-group" }, weeks.map(function (week, monthIndex) { return ( /*#__PURE__*/ // eslint-disable-next-line _react.default.createElement(_Box.default, { display: "table-row", key: year + "-" + month + "-" + monthIndex + "-week" }, week.map(function (day, dayIndex) { return /*#__PURE__*/_react.default.createElement(_Day.default, { onDaySelect: onDaySelect, daysSelected: daysSelected, year: year, month: month, day: day, isLastRow: weeks.length === monthIndex + 1, timezone: timezone, key: // eslint-disable-next-line year + "-" + month + "-" + monthIndex + "-" + dayIndex + "-week" }); })) ); })))); }; var _default = Month; exports.default = _default;