react-calendar
Version:
Ultimate calendar for your React app.
104 lines (103 loc) • 5.01 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.tileProps = exports.tileGroupProps = exports.isView = exports.isViews = exports.isValue = exports.isRef = exports.isMaxDate = exports.isMinDate = exports.isClassName = exports.isCalendarType = void 0;
var prop_types_1 = __importDefault(require("prop-types"));
var const_1 = require("./const");
var calendarTypes = Object.values(const_1.CALENDAR_TYPES);
var allViews = ['century', 'decade', 'year', 'month'];
exports.isCalendarType = prop_types_1.default.oneOf(calendarTypes);
exports.isClassName = prop_types_1.default.oneOfType([
prop_types_1.default.string,
prop_types_1.default.arrayOf(prop_types_1.default.string),
]);
function isMinDate(props, propName, componentName) {
var _a = props, _b = propName, minDate = _a[_b];
if (!minDate) {
return null;
}
if (!(minDate instanceof Date)) {
return new Error("Invalid prop `".concat(propName, "` of type `").concat(typeof minDate, "` supplied to `").concat(componentName, "`, expected instance of `Date`."));
}
var maxDate = props.maxDate;
if (maxDate && minDate > maxDate) {
return new Error("Invalid prop `".concat(propName, "` of type `").concat(typeof minDate, "` supplied to `").concat(componentName, "`, minDate cannot be larger than maxDate."));
}
return null;
}
exports.isMinDate = isMinDate;
function isMaxDate(props, propName, componentName) {
var _a = props, _b = propName, maxDate = _a[_b];
if (!maxDate) {
return null;
}
if (!(maxDate instanceof Date)) {
return new Error("Invalid prop `".concat(propName, "` of type `").concat(typeof maxDate, "` supplied to `").concat(componentName, "`, expected instance of `Date`."));
}
var minDate = props.minDate;
if (minDate && maxDate < minDate) {
return new Error("Invalid prop `".concat(propName, "` of type `").concat(typeof maxDate, "` supplied to `").concat(componentName, "`, maxDate cannot be smaller than minDate."));
}
return null;
}
exports.isMaxDate = isMaxDate;
exports.isRef = prop_types_1.default.oneOfType([
prop_types_1.default.func,
prop_types_1.default.shape({
current: prop_types_1.default.any,
}),
]);
exports.isValue = prop_types_1.default.oneOfType([
prop_types_1.default.instanceOf(Date),
prop_types_1.default.arrayOf(prop_types_1.default.instanceOf(Date)),
]);
exports.isViews = prop_types_1.default.arrayOf(prop_types_1.default.oneOf(allViews));
function isView(props, propName, componentName) {
var _a = props, _b = propName, view = _a[_b];
var views = props.views;
var allowedViews = views || allViews;
if (view !== undefined && (typeof view !== 'string' || allowedViews.indexOf(view) === -1)) {
return new Error("Invalid prop `".concat(propName, "` of value `").concat(view, "` supplied to `").concat(componentName, "`, expected one of [").concat(allowedViews
.map(function (a) { return "\"".concat(a, "\""); })
.join(', '), "]."));
}
// Everything is fine
return null;
}
exports.isView = isView;
isView.isRequired = function (props, propName, componentName) {
var _a = props, _b = propName, view = _a[_b];
if (!view) {
return new Error("The prop `".concat(propName, "` is marked as required in `").concat(componentName, "`, but its value is `").concat(view, "`."));
}
return isView(props, propName, componentName);
};
exports.tileGroupProps = {
activeStartDate: prop_types_1.default.instanceOf(Date).isRequired,
hover: prop_types_1.default.instanceOf(Date),
locale: prop_types_1.default.string,
maxDate: isMaxDate,
minDate: isMinDate,
onClick: prop_types_1.default.func,
onMouseOver: prop_types_1.default.func,
tileClassName: prop_types_1.default.oneOfType([prop_types_1.default.func, exports.isClassName]),
tileContent: prop_types_1.default.oneOfType([prop_types_1.default.func, prop_types_1.default.node]),
value: exports.isValue,
valueType: prop_types_1.default.string,
};
exports.tileProps = {
activeStartDate: prop_types_1.default.instanceOf(Date).isRequired,
classes: prop_types_1.default.arrayOf(prop_types_1.default.string).isRequired,
date: prop_types_1.default.instanceOf(Date).isRequired,
locale: prop_types_1.default.string,
maxDate: isMaxDate,
minDate: isMinDate,
onClick: prop_types_1.default.func,
onMouseOver: prop_types_1.default.func,
style: prop_types_1.default.objectOf(prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])),
tileClassName: prop_types_1.default.oneOfType([prop_types_1.default.func, exports.isClassName]),
tileContent: prop_types_1.default.oneOfType([prop_types_1.default.func, prop_types_1.default.node]),
tileDisabled: prop_types_1.default.func,
};