react-day-picker
Version:
Flexible date picker component for React
176 lines (142 loc) • 5.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _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; };
exports.cancelEvent = cancelEvent;
exports.getFirstDayOfMonth = getFirstDayOfMonth;
exports.getDaysInMonth = getDaysInMonth;
exports.getModifiersFromProps = getModifiersFromProps;
exports.getFirstDayOfWeekFromProps = getFirstDayOfWeekFromProps;
exports.isRangeOfDates = isRangeOfDates;
exports.getMonthsDiff = getMonthsDiff;
exports.getWeekArray = getWeekArray;
exports.startOfMonth = startOfMonth;
exports.getDayNodes = getDayNodes;
exports.nodeListToArray = nodeListToArray;
exports.hasOwnProp = hasOwnProp;
var _DateUtils = require('./DateUtils');
var _LocaleUtils = require('./LocaleUtils');
var _classNames = require('./classNames');
var _classNames2 = _interopRequireDefault(_classNames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function cancelEvent(e) {
e.preventDefault();
e.stopPropagation();
}
function getFirstDayOfMonth(d) {
return new Date(d.getFullYear(), d.getMonth(), 1, 12);
}
function getDaysInMonth(d) {
var resultDate = getFirstDayOfMonth(d);
resultDate.setMonth(resultDate.getMonth() + 1);
resultDate.setDate(resultDate.getDate() - 1);
return resultDate.getDate();
}
function getModifiersFromProps(props) {
var modifiers = _extends({}, props.modifiers);
if (props.selectedDays) {
modifiers[props.classNames.selected] = props.selectedDays;
}
if (props.disabledDays) {
modifiers[props.classNames.disabled] = props.disabledDays;
}
return modifiers;
}
function getFirstDayOfWeekFromProps(props) {
var firstDayOfWeek = props.firstDayOfWeek,
_props$locale = props.locale,
locale = _props$locale === undefined ? 'en' : _props$locale,
_props$localeUtils = props.localeUtils,
localeUtils = _props$localeUtils === undefined ? {} : _props$localeUtils;
if (!isNaN(firstDayOfWeek)) {
return firstDayOfWeek;
}
if (localeUtils.getFirstDayOfWeek) {
return localeUtils.getFirstDayOfWeek(locale);
}
return 0;
}
function isRangeOfDates(value) {
return !!(value && value.from && value.to);
}
function getMonthsDiff(d1, d2) {
return d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear());
}
function getWeekArray(d) {
var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _LocaleUtils.getFirstDayOfWeek)();
var fixedWeeks = arguments[2];
var daysInMonth = getDaysInMonth(d);
var dayArray = [];
var week = [];
var weekArray = [];
for (var i = 1; i <= daysInMonth; i += 1) {
dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));
}
dayArray.forEach(function (day) {
if (week.length > 0 && day.getDay() === firstDayOfWeek) {
weekArray.push(week);
week = [];
}
week.push(day);
if (dayArray.indexOf(day) === dayArray.length - 1) {
weekArray.push(week);
}
});
// unshift days to start the first week
var firstWeek = weekArray[0];
for (var _i = 7 - firstWeek.length; _i > 0; _i -= 1) {
var outsideDate = (0, _DateUtils.clone)(firstWeek[0]);
outsideDate.setDate(firstWeek[0].getDate() - 1);
firstWeek.unshift(outsideDate);
}
// push days until the end of the last week
var lastWeek = weekArray[weekArray.length - 1];
for (var _i2 = lastWeek.length; _i2 < 7; _i2 += 1) {
var _outsideDate = (0, _DateUtils.clone)(lastWeek[lastWeek.length - 1]);
_outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);
lastWeek.push(_outsideDate);
}
// add extra weeks to reach 6 weeks
if (fixedWeeks && weekArray.length < 6) {
var lastExtraWeek = void 0;
for (var _i3 = weekArray.length; _i3 < 6; _i3 += 1) {
lastExtraWeek = weekArray[weekArray.length - 1];
var lastDay = lastExtraWeek[lastExtraWeek.length - 1];
var extraWeek = [];
for (var j = 0; j < 7; j += 1) {
var _outsideDate2 = (0, _DateUtils.clone)(lastDay);
_outsideDate2.setDate(lastDay.getDate() + j + 1);
extraWeek.push(_outsideDate2);
}
weekArray.push(extraWeek);
}
}
return weekArray;
}
function startOfMonth(d) {
var newDate = (0, _DateUtils.clone)(d);
newDate.setDate(1);
newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues
return newDate;
}
function getDayNodes(node, classNames) {
var outsideClassName = void 0;
if (classNames === _classNames2.default) {
// When using CSS modules prefix the modifier as required by the BEM syntax
outsideClassName = classNames.day + '--' + classNames.outside;
} else {
outsideClassName = '' + classNames.outside;
}
var dayQuery = classNames.day.replace(/ /g, '.');
var outsideDayQuery = outsideClassName.replace(/ /g, '.');
var selector = '.' + dayQuery + ':not(.' + outsideDayQuery + ')';
return node.querySelectorAll(selector);
}
function nodeListToArray(nodeList) {
return Array.prototype.slice.call(nodeList, 0);
}
function hasOwnProp(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
//# sourceMappingURL=Helpers.js.map
;