UNPKG

react-native-easy-calendar

Version:

Customizable, easy-to-use, performant calendar components for React Native

95 lines (80 loc) 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _reactNative = require("react-native"); var _Hooks = require("../Hooks"); var _Utils = require("../Utils"); var _Contexts = require("../Contexts"); var _ = require("."); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || 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); } const Days = ({ minDate, maxDate, visibleDate, showExtraDates, onPressDay, dateProperties, DayComponent: CustomDay }) => { const theme = _react.default.useContext(_Contexts.ThemeContext); const { month } = (0, _Hooks.useSurroundingTimeUnits)(visibleDate.local().format()); const daysOfVisibleMonth = (0, _Utils.dateRange)(month.current.start, month.current.end); const initSlotsAvailable = month.current.start.day(); const daysInWeek = 6; // 0-indexed let finalSlotsAvailable = daysInWeek - month.current.end.day(); const nOfSlotsToFill6Rows = 7 * 6; if (initSlotsAvailable + daysOfVisibleMonth.length + finalSlotsAvailable < nOfSlotsToFill6Rows) { // Add an extra row at the end of the calendar finalSlotsAvailable += 7; } const initialSlots = (0, _Utils.getExtraDays)({ from: month.last.end.subtract(initSlotsAvailable - 1, 'day'), to: month.last.end }); const finalSlots = (0, _Utils.getExtraDays)({ from: month.next.start, to: month.next.start.add(finalSlotsAvailable - 1, 'day') }); const Day = CustomDay || _.Day; return /*#__PURE__*/_react.default.createElement(_reactNative.View, { style: theme.daysContainer, testID: 'days-container' }, initialSlots.map((day, index) => /*#__PURE__*/_react.default.createElement(Day, { key: index, showExtraDates: showExtraDates, date: day.format(), onPress: onPressDay, isDisabled: true, isExtraDay: true })), daysOfVisibleMonth.map(day => { const dayProperties = dateProperties[day.format('YYYY-MM-DD')]; return /*#__PURE__*/_react.default.createElement(Day, _extends({}, dayProperties, { key: day.date(), date: day.local().format('YYYY-MM-DD'), showExtraDates: showExtraDates, isStartOfMonth: month.current.start.isSame(day, 'day'), isEndOfMonth: month.current.end.isSame(day, 'day'), isStartOfWeek: day.day() === 0, isEndOfWeek: day.day() === 6, onPress: onPressDay, isExtraDay: false, isDisabled: (dayProperties === null || dayProperties === void 0 ? void 0 : dayProperties.isDisabled) || Boolean(minDate && day.isBefore(minDate, 'day')) || Boolean(maxDate && day.isAfter(maxDate, 'day')) })); }), finalSlots.map((day, index) => /*#__PURE__*/_react.default.createElement(Day, { key: index, date: day.format(), showExtraDates: showExtraDates, onPress: onPressDay, isDisabled: true, isExtraDay: true }))); }; var _default = Days; exports.default = _default; //# sourceMappingURL=Days.js.map