forgeplus-react/node_modules/react-datepicker/es/index.js

3267 lines
106 KiB
JavaScript

import React from 'react';
import propTypes from 'prop-types';
import classnames from 'classnames';
import isDate from 'date-fns/isDate';
import isValidDate from 'date-fns/isValid';
import format from 'date-fns/format';
import addMinutes from 'date-fns/addMinutes';
import addHours from 'date-fns/addHours';
import addDays from 'date-fns/addDays';
import addWeeks from 'date-fns/addWeeks';
import addMonths from 'date-fns/addMonths';
import addYears from 'date-fns/addYears';
import subMinutes from 'date-fns/subMinutes';
import subHours from 'date-fns/subHours';
import subDays from 'date-fns/subDays';
import subWeeks from 'date-fns/subWeeks';
import subMonths from 'date-fns/subMonths';
import subYears from 'date-fns/subYears';
import getSeconds from 'date-fns/getSeconds';
import getMinutes from 'date-fns/getMinutes';
import getHours from 'date-fns/getHours';
import getDay from 'date-fns/getDay';
import getDate from 'date-fns/getDate';
import getMonth from 'date-fns/getMonth';
import getYear from 'date-fns/getYear';
import getTime from 'date-fns/getTime';
import setSeconds from 'date-fns/setSeconds';
import setMinutes from 'date-fns/setMinutes';
import setHours from 'date-fns/setHours';
import setMonth from 'date-fns/setMonth';
import setYear from 'date-fns/setYear';
import min from 'date-fns/min';
import max from 'date-fns/max';
import differenceInCalendarDays from 'date-fns/differenceInCalendarDays';
import differenceInCalendarMonths from 'date-fns/differenceInCalendarMonths';
import differenceInCalendarWeeks from 'date-fns/differenceInCalendarWeeks';
import setDayOfYear from 'date-fns/setDayOfYear';
import startOfDay from 'date-fns/startOfDay';
import startOfWeek from 'date-fns/startOfWeek';
import startOfMonth from 'date-fns/startOfMonth';
import startOfYear from 'date-fns/startOfYear';
import endOfWeek from 'date-fns/endOfWeek';
import endOfMonth from 'date-fns/endOfMonth';
import dfIsEqual from 'date-fns/isEqual';
import dfIsSameDay from 'date-fns/isSameDay';
import dfIsSameMonth from 'date-fns/isSameMonth';
import dfIsSameYear from 'date-fns/isSameYear';
import isAfter from 'date-fns/isAfter';
import isBefore from 'date-fns/isBefore';
import isWithinInterval from 'date-fns/isWithinInterval';
import toDate from 'date-fns/toDate';
import parse from 'date-fns/parse';
import parseISO from 'date-fns/parseISO';
import onClickOutside from 'react-onclickoutside';
import { Manager, Popper, Reference } from 'react-popper';
function unwrapExports (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var longFormatters_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function dateLongFormatter(pattern, formatLong) {
switch (pattern) {
case 'P':
return formatLong.date({
width: 'short'
});
case 'PP':
return formatLong.date({
width: 'medium'
});
case 'PPP':
return formatLong.date({
width: 'long'
});
case 'PPPP':
default:
return formatLong.date({
width: 'full'
});
}
}
function timeLongFormatter(pattern, formatLong) {
switch (pattern) {
case 'p':
return formatLong.time({
width: 'short'
});
case 'pp':
return formatLong.time({
width: 'medium'
});
case 'ppp':
return formatLong.time({
width: 'long'
});
case 'pppp':
default:
return formatLong.time({
width: 'full'
});
}
}
function dateTimeLongFormatter(pattern, formatLong) {
var matchResult = pattern.match(/(P+)(p+)?/);
var datePattern = matchResult[1];
var timePattern = matchResult[2];
if (!timePattern) {
return dateLongFormatter(pattern, formatLong);
}
var dateTimeFormat;
switch (datePattern) {
case 'P':
dateTimeFormat = formatLong.dateTime({
width: 'short'
});
break;
case 'PP':
dateTimeFormat = formatLong.dateTime({
width: 'medium'
});
break;
case 'PPP':
dateTimeFormat = formatLong.dateTime({
width: 'long'
});
break;
case 'PPPP':
default:
dateTimeFormat = formatLong.dateTime({
width: 'full'
});
break;
}
return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));
}
var longFormatters = {
p: timeLongFormatter,
P: dateTimeLongFormatter
};
var _default = longFormatters;
exports.default = _default;
module.exports = exports.default;
});
var longFormatters = unwrapExports(longFormatters_1);
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
};
var createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
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;
};
var inherits = function (subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: false,
writable: true,
configurable: true
}
});
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
};
var possibleConstructorReturn = function (self, call) {
if (!self) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return call && (typeof call === "object" || typeof call === "function") ? call : self;
};
// This RegExp catches symbols escaped by quotes, and also
// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`
var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
// ** Date Constructors **
function newDate(value) {
var d = value ? typeof value === "string" || value instanceof String ? parseISO(value) : toDate(value) : new Date();
return isValid(d) ? d : null;
}
function parseDate(value, dateFormat, locale, strictParsing) {
var parsedDate = null;
var localeObject = getLocaleObject(locale) || getDefaultLocale();
var strictParsingValueMatch = true;
if (Array.isArray(dateFormat)) {
dateFormat.forEach(function (df) {
var tryParseDate = parse(value, df, new Date(), { locale: localeObject });
if (strictParsing) {
strictParsingValueMatch = isValid(tryParseDate) && value === format(tryParseDate, df, { awareOfUnicodeTokens: true });
}
if (isValid(tryParseDate) && strictParsingValueMatch) {
parsedDate = tryParseDate;
}
});
return parsedDate;
}
parsedDate = parse(value, dateFormat, new Date(), { locale: localeObject });
if (strictParsing) {
strictParsingValueMatch = isValid(parsedDate) && value === format(parsedDate, dateFormat, { awareOfUnicodeTokens: true });
} else if (!isValid(parsedDate)) {
dateFormat = dateFormat.match(longFormattingTokensRegExp).map(function (substring) {
var firstCharacter = substring[0];
if (firstCharacter === "p" || firstCharacter === "P") {
var longFormatter = longFormatters[firstCharacter];
return localeObject ? longFormatter(substring, localeObject.formatLong) : firstCharacter;
}
return substring;
}).join("");
if (value.length > 0) {
parsedDate = parse(value, dateFormat.slice(0, value.length), new Date());
}
if (!isValid(parsedDate)) {
parsedDate = new Date(value);
}
}
return isValid(parsedDate) && strictParsingValueMatch ? parsedDate : null;
}
function isValid(date) {
return isValidDate(date) && isAfter(date, new Date("1/1/1000"));
}
// ** Date Formatting **
function formatDate(date, formatStr, locale) {
if (locale === "en") {
return format(date, formatStr, { awareOfUnicodeTokens: true });
}
var localeObj = getLocaleObject(locale);
if (locale && !localeObj) {
console.warn("A locale object was not found for the provided string [\"" + locale + "\"].");
}
if (!localeObj && !!getDefaultLocale() && !!getLocaleObject(getDefaultLocale())) {
localeObj = getLocaleObject(getDefaultLocale());
}
return format(date, formatStr, {
locale: localeObj ? localeObj : null,
awareOfUnicodeTokens: true
});
}
function safeDateFormat(date, _ref) {
var dateFormat = _ref.dateFormat,
locale = _ref.locale;
return date && formatDate(date, Array.isArray(dateFormat) ? dateFormat[0] : dateFormat, locale) || "";
}
// ** Date Setters **
function setTime(date, _ref2) {
var _ref2$hour = _ref2.hour,
hour = _ref2$hour === undefined ? 0 : _ref2$hour,
_ref2$minute = _ref2.minute,
minute = _ref2$minute === undefined ? 0 : _ref2$minute,
_ref2$second = _ref2.second,
second = _ref2$second === undefined ? 0 : _ref2$second;
return setHours(setMinutes(setSeconds(date, second), minute), hour);
}
function getWeek(date) {
var firstDayOfYear = setDayOfYear(date, 1);
if (!isSameYear(endOfWeek(date), date)) {
return 1;
}
return differenceInCalendarWeeks(date, startOfYear(date)) + 1;
}
function getDayOfWeekCode(day, locale) {
return formatDate(day, "ddd", locale);
}
// *** Start of ***
function getStartOfDay(date) {
return startOfDay(date);
}
function getStartOfWeek(date, locale) {
var localeObj = locale ? getLocaleObject(locale) : getLocaleObject(getDefaultLocale());
return startOfWeek(date, { locale: localeObj });
}
function getStartOfMonth(date) {
return startOfMonth(date);
}
function getStartOfToday() {
return startOfDay(newDate());
}
// *** End of ***
function isSameYear(date1, date2) {
if (date1 && date2) {
return dfIsSameYear(date1, date2);
} else {
return !date1 && !date2;
}
}
function isSameMonth(date1, date2) {
if (date1 && date2) {
return dfIsSameMonth(date1, date2);
} else {
return !date1 && !date2;
}
}
function isSameDay(date1, date2) {
if (date1 && date2) {
return dfIsSameDay(date1, date2);
} else {
return !date1 && !date2;
}
}
function isEqual(date1, date2) {
if (date1 && date2) {
return dfIsEqual(date1, date2);
} else {
return !date1 && !date2;
}
}
function isDayInRange(day, startDate, endDate) {
var valid = void 0;
try {
valid = isWithinInterval(day, { start: startDate, end: endDate });
} catch (err) {
valid = false;
}
return valid;
}
// *** Diffing ***
// ** Date Localization **
function registerLocale(localeName, localeData) {
var scope = typeof window !== "undefined" ? window : global;
if (!scope.__localeData__) {
scope.__localeData__ = {};
}
scope.__localeData__[localeName] = localeData;
}
function setDefaultLocale(localeName) {
var scope = typeof window !== "undefined" ? window : global;
scope.__localeId__ = localeName;
}
function getDefaultLocale() {
var scope = typeof window !== "undefined" ? window : global;
return scope.__localeId__;
}
function getLocaleObject(localeSpec) {
if (typeof localeSpec === "string") {
// Treat it as a locale name registered by registerLocale
var scope = typeof window !== "undefined" ? window : global;
return scope.__localeData__ ? scope.__localeData__[localeSpec] : null;
} else {
// Treat it as a raw date-fns locale object
return localeSpec;
}
}
function getFormattedWeekdayInLocale(date, formatFunc, locale) {
return formatFunc(formatDate(date, "EEEE", locale));
}
function getWeekdayMinInLocale(date, locale) {
return formatDate(date, "EEEEEE", locale);
}
function getWeekdayShortInLocale(date, locale) {
return formatDate(date, "EEE", locale);
}
function getMonthInLocale(month, locale) {
return formatDate(setMonth(newDate(), month), "LLLL", locale);
}
function getMonthShortInLocale(month, locale) {
return formatDate(setMonth(newDate(), month), "LLL", locale);
}
// ** Utils for some components **
function isDayDisabled(day) {
var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
minDate = _ref3.minDate,
maxDate = _ref3.maxDate,
excludeDates = _ref3.excludeDates,
includeDates = _ref3.includeDates,
filterDate = _ref3.filterDate;
return isOutOfBounds(day, { minDate: minDate, maxDate: maxDate }) || excludeDates && excludeDates.some(function (excludeDate) {
return isSameDay(day, excludeDate);
}) || includeDates && !includeDates.some(function (includeDate) {
return isSameDay(day, includeDate);
}) || filterDate && !filterDate(newDate(day)) || false;
}
function isMonthDisabled(month) {
var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
minDate = _ref4.minDate,
maxDate = _ref4.maxDate,
excludeDates = _ref4.excludeDates,
includeDates = _ref4.includeDates,
filterDate = _ref4.filterDate;
return isOutOfBounds(month, { minDate: minDate, maxDate: maxDate }) || excludeDates && excludeDates.some(function (excludeDate) {
return isSameMonth(month, excludeDate);
}) || includeDates && !includeDates.some(function (includeDate) {
return isSameMonth(month, includeDate);
}) || filterDate && !filterDate(newDate(month)) || false;
}
function isMonthinRange(startDate, endDate, m, day) {
var startDateYear = getYear(startDate);
var startDateMonth = getMonth(startDate);
var endDateYear = getYear(endDate);
var endDateMonth = getMonth(endDate);
var dayYear = getYear(day);
if (startDateYear === endDateYear && startDateYear === dayYear) {
return startDateMonth <= m && m <= endDateMonth;
} else if (startDateYear < endDateYear) {
return dayYear === startDateYear && startDateMonth <= m || dayYear === endDateYear && endDateMonth >= m || dayYear < endDateYear && dayYear > startDateYear;
}
}
function isOutOfBounds(day) {
var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
minDate = _ref5.minDate,
maxDate = _ref5.maxDate;
return minDate && differenceInCalendarDays(day, minDate) < 0 || maxDate && differenceInCalendarDays(day, maxDate) > 0;
}
function isTimeDisabled(time, disabledTimes) {
var l = disabledTimes.length;
for (var i = 0; i < l; i++) {
if (getHours(disabledTimes[i]) === getHours(time) && getMinutes(disabledTimes[i]) === getMinutes(time)) {
return true;
}
}
return false;
}
function isTimeInDisabledRange(time, _ref6) {
var minTime = _ref6.minTime,
maxTime = _ref6.maxTime;
if (!minTime || !maxTime) {
throw new Error("Both minTime and maxTime props required");
}
var base = newDate();
var baseTime = setHours(setMinutes(base, getMinutes(time)), getHours(time));
var min$$1 = setHours(setMinutes(base, getMinutes(minTime)), getHours(minTime));
var max$$1 = setHours(setMinutes(base, getMinutes(maxTime)), getHours(maxTime));
var valid = void 0;
try {
valid = !isWithinInterval(baseTime, { start: min$$1, end: max$$1 });
} catch (err) {
valid = false;
}
return valid;
}
function monthDisabledBefore(day) {
var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
minDate = _ref7.minDate,
includeDates = _ref7.includeDates;
var previousMonth = subMonths(day, 1);
return minDate && differenceInCalendarMonths(minDate, previousMonth) > 0 || includeDates && includeDates.every(function (includeDate) {
return differenceInCalendarMonths(includeDate, previousMonth) > 0;
}) || false;
}
function monthDisabledAfter(day) {
var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
maxDate = _ref8.maxDate,
includeDates = _ref8.includeDates;
var nextMonth = addMonths(day, 1);
return maxDate && differenceInCalendarMonths(nextMonth, maxDate) > 0 || includeDates && includeDates.every(function (includeDate) {
return differenceInCalendarMonths(nextMonth, includeDate) > 0;
}) || false;
}
function getEffectiveMinDate(_ref9) {
var minDate = _ref9.minDate,
includeDates = _ref9.includeDates;
if (includeDates && minDate) {
var minDates = includeDates.filter(function (includeDate) {
return differenceInCalendarDays(includeDate, minDate) >= 0;
});
return min(minDates);
} else if (includeDates) {
return min(includeDates);
} else {
return minDate;
}
}
function getEffectiveMaxDate(_ref10) {
var maxDate = _ref10.maxDate,
includeDates = _ref10.includeDates;
if (includeDates && maxDate) {
var maxDates = includeDates.filter(function (includeDate) {
return differenceInCalendarDays(includeDate, maxDate) <= 0;
});
return max(maxDates);
} else if (includeDates) {
return max(includeDates);
} else {
return maxDate;
}
}
function getHightLightDaysMap() {
var highlightDates = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var defaultClassName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "react-datepicker__day--highlighted";
var dateClasses = new Map();
for (var i = 0, len = highlightDates.length; i < len; i++) {
var obj = highlightDates[i];
if (isDate(obj)) {
var key = formatDate(obj, "MM.dd.yyyy");
var classNamesArr = dateClasses.get(key) || [];
if (!classNamesArr.includes(defaultClassName)) {
classNamesArr.push(defaultClassName);
dateClasses.set(key, classNamesArr);
}
} else if ((typeof obj === "undefined" ? "undefined" : _typeof(obj)) === "object") {
var keys = Object.keys(obj);
var className = keys[0];
var arrOfDates = obj[keys[0]];
if (typeof className === "string" && arrOfDates.constructor === Array) {
for (var k = 0, _len = arrOfDates.length; k < _len; k++) {
var _key = formatDate(arrOfDates[k], "MM.dd.yyyy");
var _classNamesArr = dateClasses.get(_key) || [];
if (!_classNamesArr.includes(className)) {
_classNamesArr.push(className);
dateClasses.set(_key, _classNamesArr);
}
}
}
}
}
return dateClasses;
}
function timesToInjectAfter(startOfDay$$1, currentTime, currentMultiplier, intervals, injectedTimes) {
var l = injectedTimes.length;
var times = [];
for (var i = 0; i < l; i++) {
var injectedTime = addMinutes(addHours(startOfDay$$1, getHours(injectedTimes[i])), getMinutes(injectedTimes[i]));
var nextTime = addMinutes(startOfDay$$1, (currentMultiplier + 1) * intervals);
if (isAfter(injectedTime, currentTime) && isBefore(injectedTime, nextTime)) {
times.push(injectedTimes[i]);
}
}
return times;
}
function addZero(i) {
return i < 10 ? "0" + i : "" + i;
}
function generateYears(year, noOfYear, minDate, maxDate) {
var list = [];
for (var i = 0; i < 2 * noOfYear + 1; i++) {
var newYear = year + noOfYear - i;
var isInRange = true;
if (minDate) {
isInRange = getYear(minDate) <= newYear;
}
if (maxDate && isInRange) {
isInRange = getYear(maxDate) >= newYear;
}
if (isInRange) {
list.push(newYear);
}
}
return list;
}
var YearDropdownOptions = function (_React$Component) {
inherits(YearDropdownOptions, _React$Component);
function YearDropdownOptions(props) {
classCallCheck(this, YearDropdownOptions);
var _this = possibleConstructorReturn(this, _React$Component.call(this, props));
_this.renderOptions = function () {
var selectedYear = _this.props.year;
var options = _this.state.yearsList.map(function (year) {
return React.createElement(
"div",
{
className: selectedYear === year ? "react-datepicker__year-option react-datepicker__year-option--selected_year" : "react-datepicker__year-option",
key: year,
ref: year,
onClick: _this.onChange.bind(_this, year)
},
selectedYear === year ? React.createElement(
"span",
{ className: "react-datepicker__year-option--selected" },
"\u2713"
) : "",
year
);
});
var minYear = _this.props.minDate ? getYear(_this.props.minDate) : null;
var maxYear = _this.props.maxDate ? getYear(_this.props.maxDate) : null;
if (!maxYear || !_this.state.yearsList.find(function (year) {
return year === maxYear;
})) {
options.unshift(React.createElement(
"div",
{
className: "react-datepicker__year-option",
ref: "upcoming",
key: "upcoming",
onClick: _this.incrementYears
},
React.createElement("a", { className: "react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming" })
));
}
if (!minYear || !_this.state.yearsList.find(function (year) {
return year === minYear;
})) {
options.push(React.createElement(
"div",
{
className: "react-datepicker__year-option",
ref: "previous",
key: "previous",
onClick: _this.decrementYears
},
React.createElement("a", { className: "react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous" })
));
}
return options;
};
_this.onChange = function (year) {
_this.props.onChange(year);
};
_this.handleClickOutside = function () {
_this.props.onCancel();
};
_this.shiftYears = function (amount) {
var years = _this.state.yearsList.map(function (year) {
return year + amount;
});
_this.setState({
yearsList: years
});
};
_this.incrementYears = function () {
return _this.shiftYears(1);
};
_this.decrementYears = function () {
return _this.shiftYears(-1);
};
var yearDropdownItemNumber = props.yearDropdownItemNumber,
scrollableYearDropdown = props.scrollableYearDropdown;
var noOfYear = yearDropdownItemNumber || (scrollableYearDropdown ? 10 : 5);
_this.state = {
yearsList: generateYears(_this.props.year, noOfYear, _this.props.minDate, _this.props.maxDate)
};
return _this;
}
YearDropdownOptions.prototype.render = function render() {
var dropdownClass = classnames({
"react-datepicker__year-dropdown": true,
"react-datepicker__year-dropdown--scrollable": this.props.scrollableYearDropdown
});
return React.createElement(
"div",
{ className: dropdownClass },
this.renderOptions()
);
};
return YearDropdownOptions;
}(React.Component);
var WrappedYearDropdownOptions = onClickOutside(YearDropdownOptions);
var YearDropdown = function (_React$Component) {
inherits(YearDropdown, _React$Component);
function YearDropdown() {
var _temp, _this, _ret;
classCallCheck(this, YearDropdown);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {
dropdownVisible: false
}, _this.renderSelectOptions = function () {
var minYear = _this.props.minDate ? getYear(_this.props.minDate) : 1900;
var maxYear = _this.props.maxDate ? getYear(_this.props.maxDate) : 2100;
var options = [];
for (var i = minYear; i <= maxYear; i++) {
options.push(React.createElement(
"option",
{ key: i, value: i },
i
));
}
return options;
}, _this.onSelectChange = function (e) {
_this.onChange(e.target.value);
}, _this.renderSelectMode = function () {
return React.createElement(
"select",
{
value: _this.props.year,
className: "react-datepicker__year-select",
onChange: _this.onSelectChange
},
_this.renderSelectOptions()
);
}, _this.renderReadView = function (visible) {
return React.createElement(
"div",
{
key: "read",
style: { visibility: visible ? "visible" : "hidden" },
className: "react-datepicker__year-read-view",
onClick: function onClick(event) {
return _this.toggleDropdown(event);
}
},
React.createElement("span", { className: "react-datepicker__year-read-view--down-arrow" }),
React.createElement(
"span",
{ className: "react-datepicker__year-read-view--selected-year" },
_this.props.year
)
);
}, _this.renderDropdown = function () {
return React.createElement(WrappedYearDropdownOptions, {
key: "dropdown",
ref: "options",
year: _this.props.year,
onChange: _this.onChange,
onCancel: _this.toggleDropdown,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
scrollableYearDropdown: _this.props.scrollableYearDropdown,
yearDropdownItemNumber: _this.props.yearDropdownItemNumber
});
}, _this.renderScrollMode = function () {
var dropdownVisible = _this.state.dropdownVisible;
var result = [_this.renderReadView(!dropdownVisible)];
if (dropdownVisible) {
result.unshift(_this.renderDropdown());
}
return result;
}, _this.onChange = function (year) {
_this.toggleDropdown();
if (year === _this.props.year) return;
_this.props.onChange(year);
}, _this.toggleDropdown = function (event) {
_this.setState({
dropdownVisible: !_this.state.dropdownVisible
}, function () {
if (_this.props.adjustDateOnChange) {
_this.handleYearChange(_this.props.date, event);
}
});
}, _this.handleYearChange = function (date, event) {
_this.onSelect(date, event);
_this.setOpen();
}, _this.onSelect = function (date, event) {
if (_this.props.onSelect) {
_this.props.onSelect(date, event);
}
}, _this.setOpen = function () {
if (_this.props.setOpen) {
_this.props.setOpen(true);
}
}, _temp), possibleConstructorReturn(_this, _ret);
}
YearDropdown.prototype.render = function render() {
var renderedDropdown = void 0;
switch (this.props.dropdownMode) {
case "scroll":
renderedDropdown = this.renderScrollMode();
break;
case "select":
renderedDropdown = this.renderSelectMode();
break;
}
return React.createElement(
"div",
{
className: "react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--" + this.props.dropdownMode
},
renderedDropdown
);
};
return YearDropdown;
}(React.Component);
var MonthDropdownOptions = function (_React$Component) {
inherits(MonthDropdownOptions, _React$Component);
function MonthDropdownOptions() {
var _temp, _this, _ret;
classCallCheck(this, MonthDropdownOptions);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.renderOptions = function () {
return _this.props.monthNames.map(function (month, i) {
return React.createElement(
"div",
{
className: _this.props.month === i ? "react-datepicker__month-option --selected_month" : "react-datepicker__month-option",
key: month,
ref: month,
onClick: _this.onChange.bind(_this, i)
},
_this.props.month === i ? React.createElement(
"span",
{ className: "react-datepicker__month-option--selected" },
"\u2713"
) : "",
month
);
});
}, _this.onChange = function (month) {
return _this.props.onChange(month);
}, _this.handleClickOutside = function () {
return _this.props.onCancel();
}, _temp), possibleConstructorReturn(_this, _ret);
}
MonthDropdownOptions.prototype.render = function render() {
return React.createElement(
"div",
{ className: "react-datepicker__month-dropdown" },
this.renderOptions()
);
};
return MonthDropdownOptions;
}(React.Component);
var WrappedMonthDropdownOptions = onClickOutside(MonthDropdownOptions);
var MonthDropdown = function (_React$Component) {
inherits(MonthDropdown, _React$Component);
function MonthDropdown() {
var _temp, _this, _ret;
classCallCheck(this, MonthDropdown);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {
dropdownVisible: false
}, _this.renderSelectOptions = function (monthNames) {
return monthNames.map(function (M, i) {
return React.createElement(
"option",
{ key: i, value: i },
M
);
});
}, _this.renderSelectMode = function (monthNames) {
return React.createElement(
"select",
{
value: _this.props.month,
className: "react-datepicker__month-select",
onChange: function onChange(e) {
return _this.onChange(e.target.value);
}
},
_this.renderSelectOptions(monthNames)
);
}, _this.renderReadView = function (visible, monthNames) {
return React.createElement(
"div",
{
key: "read",
style: { visibility: visible ? "visible" : "hidden" },
className: "react-datepicker__month-read-view",
onClick: _this.toggleDropdown
},
React.createElement("span", { className: "react-datepicker__month-read-view--down-arrow" }),
React.createElement(
"span",
{ className: "react-datepicker__month-read-view--selected-month" },
monthNames[_this.props.month]
)
);
}, _this.renderDropdown = function (monthNames) {
return React.createElement(WrappedMonthDropdownOptions, {
key: "dropdown",
ref: "options",
month: _this.props.month,
monthNames: monthNames,
onChange: _this.onChange,
onCancel: _this.toggleDropdown
});
}, _this.renderScrollMode = function (monthNames) {
var dropdownVisible = _this.state.dropdownVisible;
var result = [_this.renderReadView(!dropdownVisible, monthNames)];
if (dropdownVisible) {
result.unshift(_this.renderDropdown(monthNames));
}
return result;
}, _this.onChange = function (month) {
_this.toggleDropdown();
if (month !== _this.props.month) {
_this.props.onChange(month);
}
}, _this.toggleDropdown = function () {
return _this.setState({
dropdownVisible: !_this.state.dropdownVisible
});
}, _temp), possibleConstructorReturn(_this, _ret);
}
MonthDropdown.prototype.render = function render() {
var _this2 = this;
var monthNames = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(this.props.useShortMonthInDropdown ? function (M) {
return getMonthShortInLocale(M, _this2.props.locale);
} : function (M) {
return getMonthInLocale(M, _this2.props.locale);
});
var renderedDropdown = void 0;
switch (this.props.dropdownMode) {
case "scroll":
renderedDropdown = this.renderScrollMode(monthNames);
break;
case "select":
renderedDropdown = this.renderSelectMode(monthNames);
break;
}
return React.createElement(
"div",
{
className: "react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--" + this.props.dropdownMode
},
renderedDropdown
);
};
return MonthDropdown;
}(React.Component);
function generateMonthYears(minDate, maxDate) {
var list = [];
var currDate = getStartOfMonth(minDate);
var lastDate = getStartOfMonth(maxDate);
while (!isAfter(currDate, lastDate)) {
list.push(newDate(currDate));
currDate = addMonths(currDate, 1);
}
return list;
}
var MonthYearDropdownOptions = function (_React$Component) {
inherits(MonthYearDropdownOptions, _React$Component);
function MonthYearDropdownOptions(props) {
classCallCheck(this, MonthYearDropdownOptions);
var _this = possibleConstructorReturn(this, _React$Component.call(this, props));
_this.renderOptions = function () {
return _this.state.monthYearsList.map(function (monthYear) {
var monthYearPoint = getTime(monthYear);
var isSameMonthYear = isSameYear(_this.props.date, monthYear) && isSameMonth(_this.props.date, monthYear);
return React.createElement(
"div",
{
className: isSameMonthYear ? "react-datepicker__month-year-option --selected_month-year" : "react-datepicker__month-year-option",
key: monthYearPoint,
ref: monthYearPoint,
onClick: _this.onChange.bind(_this, monthYearPoint)
},
isSameMonthYear ? React.createElement(
"span",
{ className: "react-datepicker__month-year-option--selected" },
"\u2713"
) : "",
formatDate(monthYear, _this.props.dateFormat)
);
});
};
_this.onChange = function (monthYear) {
return _this.props.onChange(monthYear);
};
_this.handleClickOutside = function () {
_this.props.onCancel();
};
_this.state = {
monthYearsList: generateMonthYears(_this.props.minDate, _this.props.maxDate)
};
return _this;
}
MonthYearDropdownOptions.prototype.render = function render() {
var dropdownClass = classnames({
"react-datepicker__month-year-dropdown": true,
"react-datepicker__month-year-dropdown--scrollable": this.props.scrollableMonthYearDropdown
});
return React.createElement(
"div",
{ className: dropdownClass },
this.renderOptions()
);
};
return MonthYearDropdownOptions;
}(React.Component);
var WrappedMonthYearDropdownOptions = onClickOutside(MonthYearDropdownOptions);
var MonthYearDropdown = function (_React$Component) {
inherits(MonthYearDropdown, _React$Component);
function MonthYearDropdown() {
var _temp, _this, _ret;
classCallCheck(this, MonthYearDropdown);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {
dropdownVisible: false
}, _this.renderSelectOptions = function () {
var currDate = getStartOfMonth(_this.props.minDate);
var lastDate = getStartOfMonth(_this.props.maxDate);
var options = [];
while (!isAfter(currDate, lastDate)) {
var timepoint = getTime(currDate);
options.push(React.createElement(
"option",
{ key: timepoint, value: timepoint },
formatDate(currDate, _this.props.dateFormat, _this.props.locale)
));
currDate = addMonths(currDate, 1);
}
return options;
}, _this.onSelectChange = function (e) {
_this.onChange(e.target.value);
}, _this.renderSelectMode = function () {
return React.createElement(
"select",
{
value: getTime(getStartOfMonth(_this.props.date)),
className: "react-datepicker__month-year-select",
onChange: _this.onSelectChange
},
_this.renderSelectOptions()
);
}, _this.renderReadView = function (visible) {
var yearMonth = formatDate(_this.props.date, _this.props.dateFormat, _this.props.locale);
return React.createElement(
"div",
{
key: "read",
style: { visibility: visible ? "visible" : "hidden" },
className: "react-datepicker__month-year-read-view",
onClick: function onClick(event) {
return _this.toggleDropdown(event);
}
},
React.createElement("span", { className: "react-datepicker__month-year-read-view--down-arrow" }),
React.createElement(
"span",
{ className: "react-datepicker__month-year-read-view--selected-month-year" },
yearMonth
)
);
}, _this.renderDropdown = function () {
return React.createElement(WrappedMonthYearDropdownOptions, {
key: "dropdown",
ref: "options",
date: _this.props.date,
dateFormat: _this.props.dateFormat,
onChange: _this.onChange,
onCancel: _this.toggleDropdown,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
scrollableMonthYearDropdown: _this.props.scrollableMonthYearDropdown
});
}, _this.renderScrollMode = function () {
var dropdownVisible = _this.state.dropdownVisible;
var result = [_this.renderReadView(!dropdownVisible)];
if (dropdownVisible) {
result.unshift(_this.renderDropdown());
}
return result;
}, _this.onChange = function (monthYearPoint) {
_this.toggleDropdown();
var changedDate = newDate(parseInt(monthYearPoint));
if (isSameYear(_this.props.date, changedDate) && isSameMonth(_this.props.date, changedDate)) {
return;
}
_this.props.onChange(changedDate);
}, _this.toggleDropdown = function () {
return _this.setState({
dropdownVisible: !_this.state.dropdownVisible
});
}, _temp), possibleConstructorReturn(_this, _ret);
}
MonthYearDropdown.prototype.render = function render() {
var renderedDropdown = void 0;
switch (this.props.dropdownMode) {
case "scroll":
renderedDropdown = this.renderScrollMode();
break;
case "select":
renderedDropdown = this.renderSelectMode();
break;
}
return React.createElement(
"div",
{
className: "react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--" + this.props.dropdownMode
},
renderedDropdown
);
};
return MonthYearDropdown;
}(React.Component);
var Day = function (_React$Component) {
inherits(Day, _React$Component);
function Day() {
var _temp, _this, _ret;
classCallCheck(this, Day);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {
if (!_this.isDisabled() && _this.props.onClick) {
_this.props.onClick(event);
}
}, _this.handleMouseEnter = function (event) {
if (!_this.isDisabled() && _this.props.onMouseEnter) {
_this.props.onMouseEnter(event);
}
}, _this.isSameDay = function (other) {
return isSameDay(_this.props.day, other);
}, _this.isKeyboardSelected = function () {
return !_this.props.disabledKeyboardNavigation && !_this.props.inline && !_this.isSameDay(_this.props.selected) && _this.isSameDay(_this.props.preSelection);
}, _this.isDisabled = function () {
return isDayDisabled(_this.props.day, _this.props);
}, _this.getHighLightedClass = function (defaultClassName) {
var _this$props = _this.props,
day = _this$props.day,
highlightDates = _this$props.highlightDates;
if (!highlightDates) {
return false;
}
// Looking for className in the Map of {'day string, 'className'}
var dayStr = formatDate(day, "MM.dd.yyyy");
return highlightDates.get(dayStr);
}, _this.isInRange = function () {
var _this$props2 = _this.props,
day = _this$props2.day,
startDate = _this$props2.startDate,
endDate = _this$props2.endDate;
if (!startDate || !endDate) {
return false;
}
return isDayInRange(day, startDate, endDate);
}, _this.isInSelectingRange = function () {
var _this$props3 = _this.props,
day = _this$props3.day,
selectsStart = _this$props3.selectsStart,
selectsEnd = _this$props3.selectsEnd,
selectingDate = _this$props3.selectingDate,
startDate = _this$props3.startDate,
endDate = _this$props3.endDate;
if (!(selectsStart || selectsEnd) || !selectingDate || _this.isDisabled()) {
return false;
}
if (selectsStart && endDate && (isBefore(selectingDate, endDate) || isEqual(selectingDate, endDate))) {
return isDayInRange(day, selectingDate, endDate);
}
if (selectsEnd && startDate && (isAfter(selectingDate, startDate) || isEqual(selectingDate, startDate))) {
return isDayInRange(day, startDate, selectingDate);
}
return false;
}, _this.isSelectingRangeStart = function () {
if (!_this.isInSelectingRange()) {
return false;
}
var _this$props4 = _this.props,
day = _this$props4.day,
selectingDate = _this$props4.selectingDate,
startDate = _this$props4.startDate,
selectsStart = _this$props4.selectsStart;
if (selectsStart) {
return isSameDay(day, selectingDate);
} else {
return isSameDay(day, startDate);
}
}, _this.isSelectingRangeEnd = function () {
if (!_this.isInSelectingRange()) {
return false;
}
var _this$props5 = _this.props,
day = _this$props5.day,
selectingDate = _this$props5.selectingDate,
endDate = _this$props5.endDate,
selectsEnd = _this$props5.selectsEnd;
if (selectsEnd) {
return isSameDay(day, selectingDate);
} else {
return isSameDay(day, endDate);
}
}, _this.isRangeStart = function () {
var _this$props6 = _this.props,
day = _this$props6.day,
startDate = _this$props6.startDate,
endDate = _this$props6.endDate;
if (!startDate || !endDate) {
return false;
}
return isSameDay(startDate, day);
}, _this.isRangeEnd = function () {
var _this$props7 = _this.props,
day = _this$props7.day,
startDate = _this$props7.startDate,
endDate = _this$props7.endDate;
if (!startDate || !endDate) {
return false;
}
return isSameDay(endDate, day);
}, _this.isWeekend = function () {
var weekday = getDay(_this.props.day);
return weekday === 0 || weekday === 6;
}, _this.isOutsideMonth = function () {
return _this.props.month !== undefined && _this.props.month !== getMonth(_this.props.day);
}, _this.getClassNames = function (date) {
var dayClassName = _this.props.dayClassName ? _this.props.dayClassName(date) : undefined;
return classnames("react-datepicker__day", dayClassName, "react-datepicker__day--" + getDayOfWeekCode(_this.props.day), {
"react-datepicker__day--disabled": _this.isDisabled(),
"react-datepicker__day--selected": _this.isSameDay(_this.props.selected),
"react-datepicker__day--keyboard-selected": _this.isKeyboardSelected(),
"react-datepicker__day--range-start": _this.isRangeStart(),
"react-datepicker__day--range-end": _this.isRangeEnd(),
"react-datepicker__day--in-range": _this.isInRange(),
"react-datepicker__day--in-selecting-range": _this.isInSelectingRange(),
"react-datepicker__day--selecting-range-start": _this.isSelectingRangeStart(),
"react-datepicker__day--selecting-range-end": _this.isSelectingRangeEnd(),
"react-datepicker__day--today": _this.isSameDay(newDate()),
"react-datepicker__day--weekend": _this.isWeekend(),
"react-datepicker__day--outside-month": _this.isOutsideMonth()
}, _this.getHighLightedClass("react-datepicker__day--highlighted"));
}, _temp), possibleConstructorReturn(_this, _ret);
}
Day.prototype.render = function render() {
return React.createElement(
"div",
{
className: this.getClassNames(this.props.day),
onClick: this.handleClick,
onMouseEnter: this.handleMouseEnter,
"aria-label": "day-" + getDate(this.props.day),
role: "option"
},
this.props.renderDayContents ? this.props.renderDayContents(getDate(this.props.day), this.props.day) : getDate(this.props.day)
);
};
return Day;
}(React.Component);
var WeekNumber = function (_React$Component) {
inherits(WeekNumber, _React$Component);
function WeekNumber() {
var _temp, _this, _ret;
classCallCheck(this, WeekNumber);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {
if (_this.props.onClick) {
_this.props.onClick(event);
}
}, _temp), possibleConstructorReturn(_this, _ret);
}
WeekNumber.prototype.render = function render() {
var weekNumberClasses = {
"react-datepicker__week-number": true,
"react-datepicker__week-number--clickable": !!this.props.onClick
};
return React.createElement(
"div",
{
className: classnames(weekNumberClasses),
"aria-label": "week-" + this.props.weekNumber,
onClick: this.handleClick
},
this.props.weekNumber
);
};
return WeekNumber;
}(React.Component);
var Week = function (_React$Component) {
inherits(Week, _React$Component);
function Week() {
var _temp, _this, _ret;
classCallCheck(this, Week);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleDayClick = function (day, event) {
if (_this.props.onDayClick) {
_this.props.onDayClick(day, event);
}
}, _this.handleDayMouseEnter = function (day) {
if (_this.props.onDayMouseEnter) {
_this.props.onDayMouseEnter(day);
}
}, _this.handleWeekClick = function (day, weekNumber, event) {
if (typeof _this.props.onWeekSelect === "function") {
_this.props.onWeekSelect(day, weekNumber, event);
}
if (_this.props.shouldCloseOnSelect) {
_this.props.setOpen(false);
}
}, _this.formatWeekNumber = function (date) {
if (_this.props.formatWeekNumber) {
return _this.props.formatWeekNumber(date);
}
return getWeek(date);
}, _this.renderDays = function () {
var startOfWeek$$1 = getStartOfWeek(_this.props.day, _this.props.locale);
var days = [];
var weekNumber = _this.formatWeekNumber(startOfWeek$$1);
if (_this.props.showWeekNumber) {
var onClickAction = _this.props.onWeekSelect ? _this.handleWeekClick.bind(_this, startOfWeek$$1, weekNumber) : undefined;
days.push(React.createElement(WeekNumber, { key: "W", weekNumber: weekNumber, onClick: onClickAction }));
}
return days.concat([0, 1, 2, 3, 4, 5, 6].map(function (offset) {
var day = addDays(startOfWeek$$1, offset);
return React.createElement(Day, {
key: offset,
day: day,
month: _this.props.month,
onClick: _this.handleDayClick.bind(_this, day),
onMouseEnter: _this.handleDayMouseEnter.bind(_this, day),
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
excludeDates: _this.props.excludeDates,
includeDates: _this.props.includeDates,
inline: _this.props.inline,
highlightDates: _this.props.highlightDates,
selectingDate: _this.props.selectingDate,
filterDate: _this.props.filterDate,
preSelection: _this.props.preSelection,
selected: _this.props.selected,
selectsStart: _this.props.selectsStart,
selectsEnd: _this.props.selectsEnd,
startDate: _this.props.startDate,
endDate: _this.props.endDate,
dayClassName: _this.props.dayClassName,
renderDayContents: _this.props.renderDayContents,
disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation
});
}));
}, _temp), possibleConstructorReturn(_this, _ret);
}
Week.prototype.render = function render() {
return React.createElement(
"div",
{ className: "react-datepicker__week" },
this.renderDays()
);
};
createClass(Week, null, [{
key: "defaultProps",
get: function get$$1() {
return {
shouldCloseOnSelect: true
};
}
}]);
return Week;
}(React.Component);
var FIXED_HEIGHT_STANDARD_WEEK_COUNT = 6;
var Month = function (_React$Component) {
inherits(Month, _React$Component);
function Month() {
var _temp, _this, _ret;
classCallCheck(this, Month);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleDayClick = function (day, event) {
if (_this.props.onDayClick) {
_this.props.onDayClick(day, event, _this.props.orderInDisplay);
}
}, _this.handleDayMouseEnter = function (day) {
if (_this.props.onDayMouseEnter) {
_this.props.onDayMouseEnter(day);
}
}, _this.handleMouseLeave = function () {
if (_this.props.onMouseLeave) {
_this.props.onMouseLeave();
}
}, _this.isRangeStart = function (m) {
var _this$props = _this.props,
day = _this$props.day,
startDate = _this$props.startDate,
endDate = _this$props.endDate;
if (!startDate || !endDate) {
return false;
}
return isSameMonth(setMonth(day, m), startDate);
}, _this.isRangeEnd = function (m) {
var _this$props2 = _this.props,
day = _this$props2.day,
startDate = _this$props2.startDate,
endDate = _this$props2.endDate;
if (!startDate || !endDate) {
return false;
}
return isSameMonth(setMonth(day, m), endDate);
}, _this.isWeekInMonth = function (startOfWeek$$1) {
var day = _this.props.day;
var endOfWeek$$1 = addDays(startOfWeek$$1, 6);
return isSameMonth(startOfWeek$$1, day) || isSameMonth(endOfWeek$$1, day);
}, _this.renderWeeks = function () {
var weeks = [];
var isFixedHeight = _this.props.fixedHeight;
var currentWeekStart = getStartOfWeek(getStartOfMonth(_this.props.day), _this.props.locale);
var i = 0;
var breakAfterNextPush = false;
while (true) {
weeks.push(React.createElement(Week, {
key: i,
day: currentWeekStart,
month: getMonth(_this.props.day),
onDayClick: _this.handleDayClick,
onDayMouseEnter: _this.handleDayMouseEnter,
onWeekSelect: _this.props.onWeekSelect,
formatWeekNumber: _this.props.formatWeekNumber,
locale: _this.props.locale,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
excludeDates: _this.props.excludeDates,
includeDates: _this.props.includeDates,
inline: _this.props.inline,
highlightDates: _this.props.highlightDates,
selectingDate: _this.props.selectingDate,
filterDate: _this.props.filterDate,
preSelection: _this.props.preSelection,
selected: _this.props.selected,
selectsStart: _this.props.selectsStart,
selectsEnd: _this.props.selectsEnd,
showWeekNumber: _this.props.showWeekNumbers,
startDate: _this.props.startDate,
endDate: _this.props.endDate,
dayClassName: _this.props.dayClassName,
setOpen: _this.props.setOpen,
shouldCloseOnSelect: _this.props.shouldCloseOnSelect,
disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation,
renderDayContents: _this.props.renderDayContents
}));
if (breakAfterNextPush) break;
i++;
currentWeekStart = addWeeks(currentWeekStart, 1);
// If one of these conditions is true, we will either break on this week
// or break on the next week
var isFixedAndFinalWeek = isFixedHeight && i >= FIXED_HEIGHT_STANDARD_WEEK_COUNT;
var isNonFixedAndOutOfMonth = !isFixedHeight && !_this.isWeekInMonth(currentWeekStart);
if (isFixedAndFinalWeek || isNonFixedAndOutOfMonth) {
if (_this.props.peekNextMonth) {
breakAfterNextPush = true;
} else {
break;
}
}
}
return weeks;
}, _this.onMonthClick = function (e, m) {
_this.handleDayClick(getStartOfMonth(setMonth(_this.props.day, m), e));
}, _this.getMonthClassNames = function (m) {
var _this$props3 = _this.props,
day = _this$props3.day,
startDate = _this$props3.startDate,
endDate = _this$props3.endDate,
selected = _this$props3.selected,
minDate = _this$props3.minDate,
maxDate = _this$props3.maxDate;
return classnames("react-datepicker__month-text", "react-datepicker__month-" + m, {
"react-datepicker__month--disabled": (minDate || maxDate) && isMonthDisabled(setMonth(day, m), _this.props),
"react-datepicker__month--selected": getMonth(day) === m && getYear(day) === getYear(selected),
"react-datepicker__month--in-range": isMonthinRange(startDate, endDate, m, day),
"react-datepicker__month--range-start": _this.isRangeStart(m),
"react-datepicker__month--range-end": _this.isRangeEnd(m)
});
}, _this.renderMonths = function () {
var months = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]];
return months.map(function (month, i) {
return React.createElement(
"div",
{ className: "react-datepicker__month-wrapper", key: i },
month.map(function (m, j) {
return React.createElement(
"div",
{
key: j,
onClick: function onClick(ev) {
_this.onMonthClick(ev.target, m);
},
className: _this.getMonthClassNames(m)
},
getMonthShortInLocale(m, _this.props.locale)
);
})
);
});
}, _this.getClassNames = function () {
var _this$props4 = _this.props,
selectingDate = _this$props4.selectingDate,
selectsStart = _this$props4.selectsStart,
selectsEnd = _this$props4.selectsEnd,
showMonthYearPicker = _this$props4.showMonthYearPicker;
return classnames("react-datepicker__month", {
"react-datepicker__month--selecting-range": selectingDate && (selectsStart || selectsEnd)
}, { "react-datepicker__monthPicker": showMonthYearPicker });
}, _temp), possibleConstructorReturn(_this, _ret);
}
Month.prototype.render = function render() {
var showMonthYearPicker = this.props.showMonthYearPicker;
return React.createElement(
"div",
{
className: this.getClassNames(),
onMouseLeave: this.handleMouseLeave,
role: "listbox",
"aria-label": "month-" + formatDate(this.props.day, "yyyy-MM")
},
showMonthYearPicker ? this.renderMonths() : this.renderWeeks()
);
};
return Month;
}(React.Component);
var Time = function (_React$Component) {
inherits(Time, _React$Component);
function Time() {
var _temp, _this, _ret;
classCallCheck(this, Time);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {
height: null
}, _this.handleClick = function (time) {
if ((_this.props.minTime || _this.props.maxTime) && isTimeInDisabledRange(time, _this.props) || _this.props.excludeTimes && isTimeDisabled(time, _this.props.excludeTimes) || _this.props.includeTimes && !isTimeDisabled(time, _this.props.includeTimes)) {
return;
}
_this.props.onChange(time);
}, _this.liClasses = function (time, currH, currM) {
var classes = ["react-datepicker__time-list-item"];
if (currH === getHours(time) && currM === getMinutes(time)) {
classes.push("react-datepicker__time-list-item--selected");
}
if ((_this.props.minTime || _this.props.maxTime) && isTimeInDisabledRange(time, _this.props) || _this.props.excludeTimes && isTimeDisabled(time, _this.props.excludeTimes) || _this.props.includeTimes && !isTimeDisabled(time, _this.props.includeTimes)) {
classes.push("react-datepicker__time-list-item--disabled");
}
if (_this.props.injectTimes && (getHours(time) * 60 + getMinutes(time)) % _this.props.intervals !== 0) {
classes.push("react-datepicker__time-list-item--injected");
}
return classes.join(" ");
}, _this.renderTimes = function () {
var times = [];
var format$$1 = _this.props.format ? _this.props.format : "p";
var intervals = _this.props.intervals;
var activeTime = _this.props.selected ? _this.props.selected : newDate();
var currH = getHours(activeTime);
var currM = getMinutes(activeTime);
var base = getStartOfDay(newDate());
var multiplier = 1440 / intervals;
var sortedInjectTimes = _this.props.injectTimes && _this.props.injectTimes.sort(function (a, b) {
return a - b;
});
for (var i = 0; i < multiplier; i++) {
var currentTime = addMinutes(base, i * intervals);
times.push(currentTime);
if (sortedInjectTimes) {
var timesToInject = timesToInjectAfter(base, currentTime, i, intervals, sortedInjectTimes);
times = times.concat(timesToInject);
}
}
return times.map(function (time, i) {
return React.createElement(
"li",
{
key: i,
onClick: _this.handleClick.bind(_this, time),
className: _this.liClasses(time, currH, currM),
ref: function ref(li) {
if (currH === getHours(time) && currM === getMinutes(time) || currH === getHours(time) && !_this.centerLi) {
_this.centerLi = li;
}
}
},
formatDate(time, format$$1, _this.props.locale)
);
});
}, _temp), possibleConstructorReturn(_this, _ret);
}
Time.prototype.componentDidMount = function componentDidMount() {
// code to ensure selected time will always be in focus within time window when it first appears
this.list.scrollTop = Time.calcCenterPosition(this.props.monthRef ? this.props.monthRef.clientHeight - this.header.clientHeight : this.list.clientHeight, this.centerLi);
if (this.props.monthRef && this.header) {
this.setState({
height: this.props.monthRef.clientHeight - this.header.clientHeight
});
}
};
Time.prototype.render = function render() {
var _this2 = this;
var height = this.state.height;
return React.createElement(
"div",
{
className: "react-datepicker__time-container " + (this.props.todayButton ? "react-datepicker__time-container--with-today-button" : "")
},
React.createElement(
"div",
{
className: "react-datepicker__header react-datepicker__header--time",
ref: function ref(header) {
_this2.header = header;
}
},
React.createElement(
"div",
{ className: "react-datepicker-time__header" },
this.props.timeCaption
)
),
React.createElement(
"div",
{ className: "react-datepicker__time" },
React.createElement(
"div",
{ className: "react-datepicker__time-box" },
React.createElement(
"ul",
{
className: "react-datepicker__time-list",
ref: function ref(list) {
_this2.list = list;
},
style: height ? { height: height } : {}
},
this.renderTimes.bind(this)()
)
)
)
);
};
createClass(Time, null, [{
key: "defaultProps",
get: function get$$1() {
return {
intervals: 30,
onTimeChange: function onTimeChange() {},
todayButton: null,
timeCaption: "Time"
};
}
}]);
return Time;
}(React.Component);
Time.calcCenterPosition = function (listHeight, centerLiRef) {
return centerLiRef.offsetTop - (listHeight / 2 - centerLiRef.clientHeight / 2);
};
var inputTime = function (_React$Component) {
inherits(inputTime, _React$Component);
function inputTime(props) {
classCallCheck(this, inputTime);
var _this = possibleConstructorReturn(this, _React$Component.call(this, props));
_this.onTimeChange = function (time) {
_this.setState({ time: time });
var date = new Date();
date.setHours(time.split(":")[0]);
date.setMinutes(time.split(":")[1]);
_this.props.onChange(date);
};
_this.state = {
time: _this.props.timeString
};
return _this;
}
inputTime.prototype.render = function render() {
var _this2 = this;
var time = this.state.time;
var timeString = this.props.timeString;
return React.createElement(
"div",
{ className: "react-datepicker__input-time-container" },
React.createElement(
"div",
{ className: "react-datepicker-time__caption" },
this.props.timeInputLabel
),
React.createElement(
"div",
{ className: "react-datepicker-time__input-container" },
React.createElement(
"div",
{ className: "react-datepicker-time__input" },
React.createElement("input", {
type: "time",
className: "react-datepicker-time__input",
placeholder: "Time",
name: "time-input",
required: true,
value: time,
onChange: function onChange(ev) {
_this2.onTimeChange(ev.target.value || timeString);
}
})
)
)
);
};
return inputTime;
}(React.Component);
function CalendarContainer(_ref) {
var className = _ref.className,
children = _ref.children,
_ref$arrowProps = _ref.arrowProps,
arrowProps = _ref$arrowProps === undefined ? {} : _ref$arrowProps;
return React.createElement(
"div",
{ className: className },
React.createElement("div", _extends({ className: "react-datepicker__triangle" }, arrowProps)),
children
);
}
var DROPDOWN_FOCUS_CLASSNAMES = ["react-datepicker__year-select", "react-datepicker__month-select", "react-datepicker__month-year-select"];
var isDropdownSelect = function isDropdownSelect() {
var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var classNames = (element.className || "").split(/\s+/);
return DROPDOWN_FOCUS_CLASSNAMES.some(function (testClassname) {
return classNames.indexOf(testClassname) >= 0;
});
};
var Calendar = function (_React$Component) {
inherits(Calendar, _React$Component);
createClass(Calendar, null, [{
key: "defaultProps",
get: function get$$1() {
return {
onDropdownFocus: function onDropdownFocus() {},
monthsShown: 1,
monthSelectedIn: 0,
forceShowMonthNavigation: false,
timeCaption: "Time",
previousYearButtonLabel: "Previous Year",
nextYearButtonLabel: "Next Year",
previousMonthButtonLabel: "Previous Month",
nextMonthButtonLabel: "Next Month"
};
}
}]);
function Calendar(props) {
classCallCheck(this, Calendar);
var _this = possibleConstructorReturn(this, _React$Component.call(this, props));
_this.handleClickOutside = function (event) {
_this.props.onClickOutside(event);
};
_this.handleDropdownFocus = function (event) {
if (isDropdownSelect(event.target)) {
_this.props.onDropdownFocus();
}
};
_this.getDateInView = function () {
var _this$props = _this.props,
preSelection = _this$props.preSelection,
selected = _this$props.selected,
openToDate = _this$props.openToDate;
var minDate = getEffectiveMinDate(_this.props);
var maxDate = getEffectiveMaxDate(_this.props);
var current = newDate();
var initialDate = openToDate || selected || preSelection;
if (initialDate) {
return initialDate;
} else {
if (minDate && isBefore(current, minDate)) {
return minDate;
} else if (maxDate && isAfter(current, maxDate)) {
return maxDate;
}
}
return current;
};
_this.increaseMonth = function () {
_this.setState({
date: addMonths(_this.state.date, 1)
}, function () {
return _this.handleMonthChange(_this.state.date);
});
};
_this.decreaseMonth = function () {
_this.setState({
date: subMonths(_this.state.date, 1)
}, function () {
return _this.handleMonthChange(_this.state.date);
});
};
_this.handleDayClick = function (day, event, monthSelectedIn) {
return _this.props.onSelect(day, event, monthSelectedIn);
};
_this.handleDayMouseEnter = function (day) {
_this.setState({ selectingDate: day });
_this.props.onDayMouseEnter && _this.props.onDayMouseEnter(day);
};
_this.handleMonthMouseLeave = function () {
_this.setState({ selectingDate: null });
_this.props.onMonthMouseLeave && _this.props.onMonthMouseLeave();
};
_this.handleYearChange = function (date) {
if (_this.props.onYearChange) {
_this.props.onYearChange(date);
}
};
_this.handleMonthChange = function (date) {
if (_this.props.onMonthChange) {
_this.props.onMonthChange(date);
}
if (_this.props.adjustDateOnChange) {
if (_this.props.onSelect) {
_this.props.onSelect(date);
}
if (_this.props.setOpen) {
_this.props.setOpen(true);
}
}
};
_this.handleMonthYearChange = function (date) {
_this.handleYearChange(date);
_this.handleMonthChange(date);
};
_this.changeYear = function (year) {
_this.setState({
date: setYear(_this.state.date, year)
}, function () {
return _this.handleYearChange(_this.state.date);
});
};
_this.changeMonth = function (month) {
_this.setState({
date: setMonth(_this.state.date, month)
}, function () {
return _this.handleMonthChange(_this.state.date);
});
};
_this.changeMonthYear = function (monthYear) {
_this.setState({
date: setYear(setMonth(_this.state.date, getMonth(monthYear)), getYear(monthYear))
}, function () {
return _this.handleMonthYearChange(_this.state.date);
});
};
_this.header = function () {
var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.state.date;
var startOfWeek$$1 = getStartOfWeek(date, _this.props.locale);
var dayNames = [];
if (_this.props.showWeekNumbers) {
dayNames.push(React.createElement(
"div",
{ key: "W", className: "react-datepicker__day-name" },
_this.props.weekLabel || "#"
));
}
return dayNames.concat([0, 1, 2, 3, 4, 5, 6].map(function (offset) {
var day = addDays(startOfWeek$$1, offset);
var weekDayName = _this.formatWeekday(day, _this.props.locale);
return React.createElement(
"div",
{ key: offset, className: "react-datepicker__day-name" },
weekDayName
);
}));
};
_this.formatWeekday = function (day, locale) {
if (_this.props.formatWeekDay) {
return getFormattedWeekdayInLocale(day, _this.props.formatWeekDay, locale);
}
return _this.props.useWeekdaysShort ? getWeekdayShortInLocale(day, locale) : getWeekdayMinInLocale(day, locale);
};
_this.decreaseYear = function () {
_this.setState({
date: subYears(_this.state.date, 1)
}, function () {
return _this.handleYearChange(_this.state.date);
});
};
_this.renderPreviousButton = function () {
if (_this.props.renderCustomHeader) {
return;
}
var allPrevDaysDisabled = monthDisabledBefore(_this.state.date, _this.props);
if (!_this.props.forceShowMonthNavigation && !_this.props.showDisabledMonthNavigation && allPrevDaysDisabled || _this.props.showTimeSelectOnly) {
return;
}
var classes = ["react-datepicker__navigation", "react-datepicker__navigation--previous"];
var clickHandler = _this.decreaseMonth;
if (_this.props.showMonthYearPicker) {
clickHandler = _this.decreaseYear;
}
if (allPrevDaysDisabled && _this.props.showDisabledMonthNavigation) {
classes.push("react-datepicker__navigation--previous--disabled");
clickHandler = null;
}
return React.createElement(
"button",
{
type: "button",
className: classes.join(" "),
onClick: clickHandler
},
_this.props.showMonthYearPicker ? _this.props.previousYearButtonLabel : _this.props.previousMonthButtonLabel
);
};
_this.increaseYear = function () {
_this.setState({
date: addYears(_this.state.date, 1)
}, function () {
return _this.handleYearChange(_this.state.date);
});
};
_this.renderNextButton = function () {
if (_this.props.renderCustomHeader) {
return;
}
var allNextDaysDisabled = monthDisabledAfter(_this.state.date, _this.props);
if (!_this.props.forceShowMonthNavigation && !_this.props.showDisabledMonthNavigation && allNextDaysDisabled || _this.props.showTimeSelectOnly) {
return;
}
var classes = ["react-datepicker__navigation", "react-datepicker__navigation--next"];
if (_this.props.showTimeSelect) {
classes.push("react-datepicker__navigation--next--with-time");
}
if (_this.props.todayButton) {
classes.push("react-datepicker__navigation--next--with-today-button");
}
var clickHandler = _this.increaseMonth;
if (_this.props.showMonthYearPicker) {
clickHandler = _this.increaseYear;
}
if (allNextDaysDisabled && _this.props.showDisabledMonthNavigation) {
classes.push("react-datepicker__navigation--next--disabled");
clickHandler = null;
}
return React.createElement(
"button",
{
type: "button",
className: classes.join(" "),
onClick: clickHandler
},
_this.props.showMonthYearPicker ? _this.props.nextYearButtonLabel : _this.props.nextMonthButtonLabel
);
};
_this.renderCurrentMonth = function () {
var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.state.date;
var classes = ["react-datepicker__current-month"];
if (_this.props.showYearDropdown) {
classes.push("react-datepicker__current-month--hasYearDropdown");
}
if (_this.props.showMonthDropdown) {
classes.push("react-datepicker__current-month--hasMonthDropdown");
}
if (_this.props.showMonthYearDropdown) {
classes.push("react-datepicker__current-month--hasMonthYearDropdown");
}
return React.createElement(
"div",
{ className: classes.join(" ") },
formatDate(date, _this.props.dateFormat, _this.props.locale)
);
};
_this.renderYearDropdown = function () {
var overrideHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!_this.props.showYearDropdown || overrideHide) {
return;
}
return React.createElement(YearDropdown, {
adjustDateOnChange: _this.props.adjustDateOnChange,
date: _this.state.date,
onSelect: _this.props.onSelect,
setOpen: _this.props.setOpen,
dropdownMode: _this.props.dropdownMode,
onChange: _this.changeYear,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
year: getYear(_this.state.date),
scrollableYearDropdown: _this.props.scrollableYearDropdown,
yearDropdownItemNumber: _this.props.yearDropdownItemNumber
});
};
_this.renderMonthDropdown = function () {
var overrideHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!_this.props.showMonthDropdown || overrideHide) {
return;
}
return React.createElement(MonthDropdown, {
dropdownMode: _this.props.dropdownMode,
locale: _this.props.locale,
onChange: _this.changeMonth,
month: getMonth(_this.state.date),
useShortMonthInDropdown: _this.props.useShortMonthInDropdown
});
};
_this.renderMonthYearDropdown = function () {
var overrideHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!_this.props.showMonthYearDropdown || overrideHide) {
return;
}
return React.createElement(MonthYearDropdown, {
dropdownMode: _this.props.dropdownMode,
locale: _this.props.locale,
dateFormat: _this.props.dateFormat,
onChange: _this.changeMonthYear,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
date: _this.state.date,
scrollableMonthYearDropdown: _this.props.scrollableMonthYearDropdown
});
};
_this.renderTodayButton = function () {
if (!_this.props.todayButton || _this.props.showTimeSelectOnly) {
return;
}
return React.createElement(
"div",
{
className: "react-datepicker__today-button",
onClick: function onClick(e) {
return _this.props.onSelect(getStartOfToday(), e);
}
},
_this.props.todayButton
);
};
_this.renderDefaultHeader = function (_ref) {
var monthDate = _ref.monthDate,
i = _ref.i;
return React.createElement(
"div",
{ className: "react-datepicker__header" },
_this.renderCurrentMonth(monthDate),
React.createElement(
"div",
{
className: "react-datepicker__header__dropdown react-datepicker__header__dropdown--" + _this.props.dropdownMode,
onFocus: _this.handleDropdownFocus
},
_this.renderMonthDropdown(i !== 0),
_this.renderMonthYearDropdown(i !== 0),
_this.renderYearDropdown(i !== 0)
),
React.createElement(
"div",
{ className: "react-datepicker__day-names" },
_this.header(monthDate)
)
);
};
_this.renderCustomHeader = function (_ref2) {
var monthDate = _ref2.monthDate,
i = _ref2.i;
if (i !== 0) {
return null;
}
var prevMonthButtonDisabled = monthDisabledBefore(_this.state.date, _this.props);
var nextMonthButtonDisabled = monthDisabledAfter(_this.state.date, _this.props);
return React.createElement(
"div",
{
className: "react-datepicker__header react-datepicker__header--custom",
onFocus: _this.props.onDropdownFocus
},
_this.props.renderCustomHeader(_extends({}, _this.state, {
changeMonth: _this.changeMonth,
changeYear: _this.changeYear,
decreaseMonth: _this.decreaseMonth,
increaseMonth: _this.increaseMonth,
prevMonthButtonDisabled: prevMonthButtonDisabled,
nextMonthButtonDisabled: nextMonthButtonDisabled
})),
React.createElement(
"div",
{ className: "react-datepicker__day-names" },
_this.header(monthDate)
)
);
};
_this.renderYearHeader = function () {
return React.createElement(
"div",
{ className: "react-datepicker__header react-datepicker-year-header" },
getYear(_this.state.date)
);
};
_this.renderMonths = function () {
if (_this.props.showTimeSelectOnly) {
return;
}
var monthList = [];
for (var i = 0; i < _this.props.monthsShown; ++i) {
var monthsToAdd = i - _this.props.monthSelectedIn;
var monthDate = addMonths(_this.state.date, monthsToAdd);
var monthKey = "month-" + i;
monthList.push(React.createElement(
"div",
{
key: monthKey,
ref: function ref(div) {
_this.monthContainer = div;
},
className: "react-datepicker__month-container"
},
!_this.props.showMonthYearPicker ? _this.props.renderCustomHeader ? _this.renderCustomHeader({ monthDate: monthDate, i: i }) : _this.renderDefaultHeader({ monthDate: monthDate, i: i }) : _this.renderYearHeader({ monthDate: monthDate, i: i }),
React.createElement(Month, {
onChange: _this.changeMonthYear,
day: monthDate,
dayClassName: _this.props.dayClassName,
onDayClick: _this.handleDayClick,
onDayMouseEnter: _this.handleDayMouseEnter,
onMouseLeave: _this.handleMonthMouseLeave,
onWeekSelect: _this.props.onWeekSelect,
orderInDisplay: i,
formatWeekNumber: _this.props.formatWeekNumber,
locale: _this.props.locale,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
excludeDates: _this.props.excludeDates,
highlightDates: _this.props.highlightDates,
selectingDate: _this.state.selectingDate,
includeDates: _this.props.includeDates,
inline: _this.props.inline,
fixedHeight: _this.props.fixedHeight,
filterDate: _this.props.filterDate,
preSelection: _this.props.preSelection,
selected: _this.props.selected,
selectsStart: _this.props.selectsStart,
selectsEnd: _this.props.selectsEnd,
showWeekNumbers: _this.props.showWeekNumbers,
startDate: _this.props.startDate,
endDate: _this.props.endDate,
peekNextMonth: _this.props.peekNextMonth,
setOpen: _this.props.setOpen,
shouldCloseOnSelect: _this.props.shouldCloseOnSelect,
renderDayContents: _this.props.renderDayContents,
disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation,
showMonthYearPicker: _this.props.showMonthYearPicker
})
));
}
return monthList;
};
_this.renderTimeSection = function () {
if (_this.props.showTimeSelect && (_this.state.monthContainer || _this.props.showTimeSelectOnly)) {
return React.createElement(Time, {
selected: _this.props.selected,
onChange: _this.props.onTimeChange,
format: _this.props.timeFormat,
includeTimes: _this.props.includeTimes,
intervals: _this.props.timeIntervals,
minTime: _this.props.minTime,
maxTime: _this.props.maxTime,
excludeTimes: _this.props.excludeTimes,
timeCaption: _this.props.timeCaption,
todayButton: _this.props.todayButton,
showMonthDropdown: _this.props.showMonthDropdown,
showMonthYearDropdown: _this.props.showMonthYearDropdown,
showYearDropdown: _this.props.showYearDropdown,
withPortal: _this.props.withPortal,
monthRef: _this.state.monthContainer,
injectTimes: _this.props.injectTimes,
locale: _this.props.locale
});
}
};
_this.renderInputTimeSection = function () {
var time = new Date(_this.props.selected);
var timeString = addZero(time.getHours()) + ":" + addZero(time.getMinutes());
if (_this.props.showTimeInput) {
return React.createElement(inputTime, {
timeString: timeString,
timeInputLabel: _this.props.timeInputLabel,
onChange: _this.props.onTimeChange
});
}
};
_this.state = {
date: _this.getDateInView(),
selectingDate: null,
monthContainer: null
};
return _this;
}
Calendar.prototype.componentDidMount = function componentDidMount() {
var _this2 = this;
// monthContainer height is needed in time component
// to determine the height for the ul in the time component
// setState here so height is given after final component
// layout is rendered
if (this.props.showTimeSelect) {
this.assignMonthContainer = function () {
_this2.setState({ monthContainer: _this2.monthContainer });
}();
}
};
Calendar.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {
if (this.props.preSelection && !isSameDay(this.props.preSelection, prevProps.preSelection)) {
this.setState({
date: this.props.preSelection
});
} else if (this.props.openToDate && !isSameDay(this.props.openToDate, prevProps.openToDate)) {
this.setState({
date: this.props.openToDate
});
}
};
Calendar.prototype.render = function render() {
var Container = this.props.container || CalendarContainer;
return React.createElement(
Container,
{
className: classnames("react-datepicker", this.props.className, {
"react-datepicker--time-only": this.props.showTimeSelectOnly
})
},
this.renderPreviousButton(),
this.renderNextButton(),
this.renderMonths(),
this.renderTodayButton(),
this.renderTimeSection(),
this.renderInputTimeSection(),
this.props.children
);
};
return Calendar;
}(React.Component);
var PopperComponent = function (_React$Component) {
inherits(PopperComponent, _React$Component);
function PopperComponent() {
classCallCheck(this, PopperComponent);
return possibleConstructorReturn(this, _React$Component.apply(this, arguments));
}
PopperComponent.prototype.render = function render() {
var _props = this.props,
className = _props.className,
hidePopper = _props.hidePopper,
popperComponent = _props.popperComponent,
popperModifiers = _props.popperModifiers,
popperPlacement = _props.popperPlacement,
popperProps = _props.popperProps,
targetComponent = _props.targetComponent;
var popper = void 0;
if (!hidePopper) {
var classes = classnames("react-datepicker-popper", className);
popper = React.createElement(
Popper,
_extends({
modifiers: popperModifiers,
placement: popperPlacement
}, popperProps),
function (_ref) {
var ref = _ref.ref,
style = _ref.style,
placement = _ref.placement,
arrowProps = _ref.arrowProps;
return React.createElement(
"div",
_extends({ ref: ref, style: style }, {
className: classes,
"data-placement": placement
}),
React.cloneElement(popperComponent, { arrowProps: arrowProps })
);
}
);
}
if (this.props.popperContainer) {
popper = React.createElement(this.props.popperContainer, {}, popper);
}
return React.createElement(
Manager,
null,
React.createElement(
Reference,
null,
function (_ref2) {
var ref = _ref2.ref;
return React.createElement(
"div",
{ ref: ref, className: "react-datepicker-wrapper" },
targetComponent
);
}
),
popper
);
};
createClass(PopperComponent, null, [{
key: "defaultProps",
get: function get$$1() {
return {
hidePopper: true,
popperModifiers: {
preventOverflow: {
enabled: true,
escapeWithReference: true,
boundariesElement: "viewport"
}
},
popperProps: {},
popperPlacement: "bottom-start"
};
}
}]);
return PopperComponent;
}(React.Component);
var outsideClickIgnoreClass = "react-datepicker-ignore-onclickoutside";
var WrappedCalendar = onClickOutside(Calendar);
// Compares dates year+month combinations
function hasPreSelectionChanged(date1, date2) {
if (date1 && date2) {
return getMonth(date1) !== getMonth(date2) || getYear(date1) !== getYear(date2);
}
return date1 !== date2;
}
/**
* General datepicker component.
*/
var INPUT_ERR_1 = "Date input not valid.";
var DatePicker = function (_React$Component) {
inherits(DatePicker, _React$Component);
createClass(DatePicker, null, [{
key: "defaultProps",
get: function get$$1() {
return {
allowSameDay: false,
dateFormat: "MM/dd/yyyy",
dateFormatCalendar: "LLLL yyyy",
onChange: function onChange() {},
disabled: false,
disabledKeyboardNavigation: false,
dropdownMode: "scroll",
onFocus: function onFocus() {},
onBlur: function onBlur() {},
onKeyDown: function onKeyDown() {},
onInputClick: function onInputClick() {},
onSelect: function onSelect() {},
onClickOutside: function onClickOutside$$1() {},
onMonthChange: function onMonthChange() {},
preventOpenOnFocus: false,
onYearChange: function onYearChange() {},
onInputError: function onInputError() {},
monthsShown: 1,
readOnly: false,
withPortal: false,
shouldCloseOnSelect: true,
showTimeSelect: false,
showTimeInput: false,
showMonthYearPicker: false,
strictParsing: false,
timeIntervals: 30,
timeCaption: "Time",
previousMonthButtonLabel: "Previous Month",
nextMonthButtonLabel: "Next month",
timeInputLabel: "Time",
renderDayContents: function renderDayContents(date) {
return date;
},
inlineFocusSelectedMonth: false
};
}
}]);
function DatePicker(props) {
classCallCheck(this, DatePicker);
var _this = possibleConstructorReturn(this, _React$Component.call(this, props));
_this.getPreSelection = function () {
return _this.props.openToDate ? _this.props.openToDate : _this.props.selectsEnd && _this.props.startDate ? _this.props.startDate : _this.props.selectsStart && _this.props.endDate ? _this.props.endDate : newDate();
};
_this.calcInitialState = function () {
var defaultPreSelection = _this.getPreSelection();
var minDate = getEffectiveMinDate(_this.props);
var maxDate = getEffectiveMaxDate(_this.props);
var boundedPreSelection = minDate && isBefore(defaultPreSelection, minDate) ? minDate : maxDate && isAfter(defaultPreSelection, maxDate) ? maxDate : defaultPreSelection;
return {
open: _this.props.startOpen || false,
preventFocus: false,
preSelection: _this.props.selected ? _this.props.selected : boundedPreSelection,
// transforming highlighted days (perhaps nested array)
// to flat Map for faster access in day.jsx
highlightDates: getHightLightDaysMap(_this.props.highlightDates),
focused: false
};
};
_this.clearPreventFocusTimeout = function () {
if (_this.preventFocusTimeout) {
clearTimeout(_this.preventFocusTimeout);
}
};
_this.setFocus = function () {
if (_this.input && _this.input.focus) {
_this.input.focus();
}
};
_this.setBlur = function () {
if (_this.input && _this.input.blur) {
_this.input.blur();
}
_this.cancelFocusInput();
};
_this.setOpen = function (open) {
var skipSetBlur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
_this.setState({
open: open,
preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection,
lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE
}, function () {
if (!open) {
_this.setState(function (prev) {
return {
focused: skipSetBlur ? prev.focused : false
};
}, function () {
!skipSetBlur && _this.setBlur();
_this.setState({ inputValue: null });
});
}
});
};
_this.inputOk = function () {
return isDate(_this.state.preSelection);
};
_this.isCalendarOpen = function () {
return _this.props.open === undefined ? _this.state.open && !_this.props.disabled && !_this.props.readOnly : _this.props.open;
};
_this.handleFocus = function (event) {
if (!_this.state.preventFocus) {
_this.props.onFocus(event);
if (!_this.props.preventOpenOnFocus && !_this.props.readOnly) {
_this.setOpen(true);
}
}
_this.setState({ focused: true });
};
_this.cancelFocusInput = function () {
clearTimeout(_this.inputFocusTimeout);
_this.inputFocusTimeout = null;
};
_this.deferFocusInput = function () {
_this.cancelFocusInput();
_this.inputFocusTimeout = setTimeout(function () {
return _this.setFocus();
}, 1);
};
_this.handleDropdownFocus = function () {
_this.cancelFocusInput();
};
_this.handleBlur = function (event) {
if (_this.state.open && !_this.props.withPortal && !_this.props.showTimeInput) {
_this.deferFocusInput();
} else {
_this.props.onBlur(event);
}
_this.setState({ focused: false });
};
_this.handleCalendarClickOutside = function (event) {
if (!_this.props.inline) {
_this.setOpen(false);
}
_this.props.onClickOutside(event);
if (_this.props.withPortal) {
event.preventDefault();
}
};
_this.handleChange = function () {
for (var _len = arguments.length, allArgs = Array(_len), _key = 0; _key < _len; _key++) {
allArgs[_key] = arguments[_key];
}
var event = allArgs[0];
if (_this.props.onChangeRaw) {
_this.props.onChangeRaw.apply(_this, allArgs);
if (typeof event.isDefaultPrevented !== "function" || event.isDefaultPrevented()) {
return;
}
}
_this.setState({
inputValue: event.target.value,
lastPreSelectChange: PRESELECT_CHANGE_VIA_INPUT
});
var date = parseDate(event.target.value, _this.props.dateFormat, _this.props.locale, _this.props.strictParsing);
if (date || !event.target.value) {
_this.setSelected(date, event, true);
}
};
_this.handleSelect = function (date, event, monthSelectedIn) {
// Preventing onFocus event to fix issue
// https://github.com/Hacker0x01/react-datepicker/issues/628
_this.setState({ preventFocus: true }, function () {
_this.preventFocusTimeout = setTimeout(function () {
return _this.setState({ preventFocus: false });
}, 50);
return _this.preventFocusTimeout;
});
_this.setSelected(date, event, undefined, monthSelectedIn);
if (!_this.props.shouldCloseOnSelect || _this.props.showTimeSelect) {
_this.setPreSelection(date);
} else if (!_this.props.inline) {
_this.setOpen(false);
}
};
_this.setSelected = function (date, event, keepInput, monthSelectedIn) {
var changedDate = date;
if (changedDate !== null && isDayDisabled(changedDate, _this.props)) {
return;
}
if (!isEqual(_this.props.selected, changedDate) || _this.props.allowSameDay) {
if (changedDate !== null) {
if (_this.props.selected) {
var selected = _this.props.selected;
if (keepInput) selected = newDate(changedDate);
changedDate = setTime(changedDate, {
hour: getHours(selected),
minute: getMinutes(selected),
second: getSeconds(selected)
});
}
if (!_this.props.inline) {
_this.setState({
preSelection: changedDate
});
}
if (_this.props.inline && _this.props.monthsShown > 1 && !_this.props.inlineFocusSelectedMonth) {
_this.setState({ monthSelectedIn: monthSelectedIn });
}
}
_this.props.onChange(changedDate, event);
}
_this.props.onSelect(changedDate, event);
if (!keepInput) {
_this.setState({ inputValue: null });
}
};
_this.setPreSelection = function (date) {
var hasMinDate = typeof _this.props.minDate !== "undefined";
var hasMaxDate = typeof _this.props.maxDate !== "undefined";
var isValidDateSelection = true;
if (date) {
if (hasMinDate && hasMaxDate) {
isValidDateSelection = isDayInRange(date, _this.props.minDate, _this.props.maxDate);
} else if (hasMinDate) {
isValidDateSelection = isAfter(date, _this.props.minDate);
} else if (hasMaxDate) {
isValidDateSelection = isBefore(date, _this.props.maxDate);
}
}
if (isValidDateSelection) {
_this.setState({
preSelection: date
});
}
};
_this.handleTimeChange = function (time) {
var selected = _this.props.selected ? _this.props.selected : _this.getPreSelection();
var changedDate = setTime(selected, {
hour: getHours(time),
minute: getMinutes(time)
});
_this.setState({
preSelection: changedDate
});
_this.props.onChange(changedDate);
if (_this.props.shouldCloseOnSelect) {
_this.setOpen(false);
}
if (_this.props.showTimeInput) {
_this.setOpen(true);
}
_this.setState({ inputValue: null });
};
_this.onInputClick = function () {
if (!_this.props.disabled && !_this.props.readOnly) {
_this.setOpen(true);
}
_this.props.onInputClick();
};
_this.onInputKeyDown = function (event) {
_this.props.onKeyDown(event);
var eventKey = event.key;
if (!_this.state.open && !_this.props.inline && !_this.props.preventOpenOnFocus) {
if (eventKey === "ArrowDown" || eventKey === "ArrowUp") {
_this.onInputClick();
}
return;
}
var copy = newDate(_this.state.preSelection);
if (eventKey === "Enter") {
event.preventDefault();
if (_this.inputOk() && _this.state.lastPreSelectChange === PRESELECT_CHANGE_VIA_NAVIGATE) {
_this.handleSelect(copy, event);
!_this.props.shouldCloseOnSelect && _this.setPreSelection(copy);
} else {
_this.setOpen(false);
}
} else if (eventKey === "Escape") {
event.preventDefault();
_this.setOpen(false);
if (!_this.inputOk()) {
_this.props.onInputError({ code: 1, msg: INPUT_ERR_1 });
}
} else if (eventKey === "Tab") {
_this.setOpen(false, true);
} else if (!_this.props.disabledKeyboardNavigation) {
var newSelection = void 0;
switch (eventKey) {
case "ArrowLeft":
newSelection = subDays(copy, 1);
break;
case "ArrowRight":
newSelection = addDays(copy, 1);
break;
case "ArrowUp":
newSelection = subWeeks(copy, 1);
break;
case "ArrowDown":
newSelection = addWeeks(copy, 1);
break;
case "PageUp":
newSelection = subMonths(copy, 1);
break;
case "PageDown":
newSelection = addMonths(copy, 1);
break;
case "Home":
newSelection = subYears(copy, 1);
break;
case "End":
newSelection = addYears(copy, 1);
break;
}
if (!newSelection) {
if (_this.props.onInputError) {
_this.props.onInputError({ code: 1, msg: INPUT_ERR_1 });
}
return; // Let the input component handle this keydown
}
event.preventDefault();
_this.setState({ lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE });
if (_this.props.adjustDateOnChange) {
_this.setSelected(newSelection);
}
_this.setPreSelection(newSelection);
}
};
_this.onClearClick = function (event) {
if (event) {
if (event.preventDefault) {
event.preventDefault();
}
}
_this.props.onChange(null, event);
_this.setState({ inputValue: null });
};
_this.clear = function () {
_this.onClearClick();
};
_this.renderCalendar = function () {
if (!_this.props.inline && !_this.isCalendarOpen()) {
return null;
}
return React.createElement(
WrappedCalendar,
{
ref: function ref(elem) {
_this.calendar = elem;
},
locale: _this.props.locale,
adjustDateOnChange: _this.props.adjustDateOnChange,
setOpen: _this.setOpen,
shouldCloseOnSelect: _this.props.shouldCloseOnSelect,
dateFormat: _this.props.dateFormatCalendar,
useWeekdaysShort: _this.props.useWeekdaysShort,
formatWeekDay: _this.props.formatWeekDay,
dropdownMode: _this.props.dropdownMode,
selected: _this.props.selected,
preSelection: _this.state.preSelection,
onSelect: _this.handleSelect,
onWeekSelect: _this.props.onWeekSelect,
openToDate: _this.props.openToDate,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
selectsStart: _this.props.selectsStart,
selectsEnd: _this.props.selectsEnd,
startDate: _this.props.startDate,
endDate: _this.props.endDate,
excludeDates: _this.props.excludeDates,
filterDate: _this.props.filterDate,
onClickOutside: _this.handleCalendarClickOutside,
formatWeekNumber: _this.props.formatWeekNumber,
highlightDates: _this.state.highlightDates,
includeDates: _this.props.includeDates,
includeTimes: _this.props.includeTimes,
injectTimes: _this.props.injectTimes,
inline: _this.props.inline,
peekNextMonth: _this.props.peekNextMonth,
showMonthDropdown: _this.props.showMonthDropdown,
useShortMonthInDropdown: _this.props.useShortMonthInDropdown,
showMonthYearDropdown: _this.props.showMonthYearDropdown,
showWeekNumbers: _this.props.showWeekNumbers,
showYearDropdown: _this.props.showYearDropdown,
withPortal: _this.props.withPortal,
forceShowMonthNavigation: _this.props.forceShowMonthNavigation,
showDisabledMonthNavigation: _this.props.showDisabledMonthNavigation,
scrollableYearDropdown: _this.props.scrollableYearDropdown,
scrollableMonthYearDropdown: _this.props.scrollableMonthYearDropdown,
todayButton: _this.props.todayButton,
weekLabel: _this.props.weekLabel,
outsideClickIgnoreClass: outsideClickIgnoreClass,
fixedHeight: _this.props.fixedHeight,
monthsShown: _this.props.monthsShown,
monthSelectedIn: _this.state.monthSelectedIn,
onDropdownFocus: _this.handleDropdownFocus,
onMonthChange: _this.props.onMonthChange,
onYearChange: _this.props.onYearChange,
dayClassName: _this.props.dayClassName,
showTimeSelect: _this.props.showTimeSelect,
showTimeSelectOnly: _this.props.showTimeSelectOnly,
onTimeChange: _this.handleTimeChange,
timeFormat: _this.props.timeFormat,
timeIntervals: _this.props.timeIntervals,
minTime: _this.props.minTime,
maxTime: _this.props.maxTime,
excludeTimes: _this.props.excludeTimes,
timeCaption: _this.props.timeCaption,
className: _this.props.calendarClassName,
container: _this.props.calendarContainer,
yearDropdownItemNumber: _this.props.yearDropdownItemNumber,
previousMonthButtonLabel: _this.props.previousMonthButtonLabel,
nextMonthButtonLabel: _this.props.nextMonthButtonLabel,
timeInputLabel: _this.props.timeInputLabel,
disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation,
renderCustomHeader: _this.props.renderCustomHeader,
popperProps: _this.props.popperProps,
renderDayContents: _this.props.renderDayContents,
onDayMouseEnter: _this.props.onDayMouseEnter,
onMonthMouseLeave: _this.props.onMonthMouseLeave,
showTimeInput: _this.props.showTimeInput,
showMonthYearPicker: _this.props.showMonthYearPicker
},
_this.props.children
);
};
_this.renderDateInput = function () {
var _classnames, _React$cloneElement;
var className = classnames(_this.props.className, (_classnames = {}, _classnames[outsideClickIgnoreClass] = _this.state.open, _classnames));
var customInput = _this.props.customInput || React.createElement("input", { type: "text" });
var customInputRef = _this.props.customInputRef || "ref";
var inputValue = typeof _this.props.value === "string" ? _this.props.value : typeof _this.state.inputValue === "string" ? _this.state.inputValue : safeDateFormat(_this.props.selected, _this.props);
return React.cloneElement(customInput, (_React$cloneElement = {}, _React$cloneElement[customInputRef] = function (input) {
_this.input = input;
}, _React$cloneElement.value = inputValue, _React$cloneElement.onBlur = _this.handleBlur, _React$cloneElement.onChange = _this.handleChange, _React$cloneElement.onClick = _this.onInputClick, _React$cloneElement.onFocus = _this.handleFocus, _React$cloneElement.onKeyDown = _this.onInputKeyDown, _React$cloneElement.id = _this.props.id, _React$cloneElement.name = _this.props.name, _React$cloneElement.autoFocus = _this.props.autoFocus, _React$cloneElement.placeholder = _this.props.placeholderText, _React$cloneElement.disabled = _this.props.disabled, _React$cloneElement.autoComplete = _this.props.autoComplete, _React$cloneElement.className = className, _React$cloneElement.title = _this.props.title, _React$cloneElement.readOnly = _this.props.readOnly, _React$cloneElement.required = _this.props.required, _React$cloneElement.tabIndex = _this.props.tabIndex, _React$cloneElement));
};
_this.renderClearButton = function () {
if (_this.props.isClearable && _this.props.selected != null) {
return React.createElement("button", {
type: "button",
className: "react-datepicker__close-icon",
onClick: _this.onClearClick,
title: _this.props.clearButtonTitle,
tabIndex: -1
});
} else {
return null;
}
};
_this.state = _this.calcInitialState();
return _this;
}
DatePicker.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
if (prevProps.inline && hasPreSelectionChanged(prevProps.selected, this.props.selected)) {
this.setPreSelection(this.props.selected);
}
if (this.state.monthSelectedIn !== undefined && prevProps.monthsShown !== this.props.monthsShown) {
this.setState({ monthSelectedIn: 0 });
}
if (prevProps.highlightDates !== this.props.highlightDates) {
this.setState({
highlightDates: getHightLightDaysMap(this.props.highlightDates)
});
}
if (!prevState.focused && !isEqual(prevProps.selected, this.props.selected)) {
this.setState({ inputValue: null });
}
};
DatePicker.prototype.componentWillUnmount = function componentWillUnmount() {
this.clearPreventFocusTimeout();
};
DatePicker.prototype.render = function render() {
var calendar = this.renderCalendar();
if (this.props.inline && !this.props.withPortal) {
return calendar;
}
if (this.props.withPortal) {
return React.createElement(
"div",
null,
!this.props.inline ? React.createElement(
"div",
{ className: "react-datepicker__input-container" },
this.renderDateInput(),
this.renderClearButton()
) : null,
this.state.open || this.props.inline ? React.createElement(
"div",
{ className: "react-datepicker__portal" },
calendar
) : null
);
}
return React.createElement(PopperComponent, {
className: this.props.popperClassName,
hidePopper: !this.isCalendarOpen(),
popperModifiers: this.props.popperModifiers,
targetComponent: React.createElement(
"div",
{ className: "react-datepicker__input-container" },
this.renderDateInput(),
this.renderClearButton()
),
popperContainer: this.props.popperContainer,
popperComponent: calendar,
popperPlacement: this.props.popperPlacement,
popperProps: this.props.popperProps
});
};
return DatePicker;
}(React.Component);
var PRESELECT_CHANGE_VIA_INPUT = "input";
var PRESELECT_CHANGE_VIA_NAVIGATE = "navigate";
export { registerLocale, setDefaultLocale, getDefaultLocale, CalendarContainer };
export default DatePicker;