(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("moment"), require("react"), require("react-onclickoutside"), require("react-dom"));
else if(typeof define === 'function' && define.amd)
define(["moment", "react", "react-onclickoutside", "react-dom"], factory);
else if(typeof exports === 'object')
exports["DatePicker"] = factory(require("moment"), require("react"), require("react-onclickoutside"), require("react-dom"));
else
root["DatePicker"] = factory(root["moment"], root["React"], root["OnClickOutside"], root["ReactDOM"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_14__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _date_input = __webpack_require__(1);
var _date_input2 = _interopRequireDefault(_date_input);
var _calendar = __webpack_require__(5);
var _calendar2 = _interopRequireDefault(_calendar);
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _tether_component = __webpack_require__(13);
var _tether_component2 = _interopRequireDefault(_tether_component);
var _classnames2 = __webpack_require__(12);
var _classnames3 = _interopRequireDefault(_classnames2);
var _date_utils = __webpack_require__(4);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var outsideClickIgnoreClass = 'react-datepicker-ignore-onclickoutside';
/**
* General datepicker component.
*/
var DatePicker = _react2.default.createClass({
displayName: 'DatePicker',
propTypes: {
autoComplete: _react2.default.PropTypes.string,
className: _react2.default.PropTypes.string,
dateFormat: _react2.default.PropTypes.string,
dateFormatCalendar: _react2.default.PropTypes.string,
disabled: _react2.default.PropTypes.bool,
endDate: _react2.default.PropTypes.object,
excludeDates: _react2.default.PropTypes.array,
filterDate: _react2.default.PropTypes.func,
fixedHeight: _react2.default.PropTypes.bool,
id: _react2.default.PropTypes.string,
includeDates: _react2.default.PropTypes.array,
inline: _react2.default.PropTypes.bool,
isClearable: _react2.default.PropTypes.bool,
locale: _react2.default.PropTypes.string,
maxDate: _react2.default.PropTypes.object,
minDate: _react2.default.PropTypes.object,
name: _react2.default.PropTypes.string,
onBlur: _react2.default.PropTypes.func,
onChange: _react2.default.PropTypes.func.isRequired,
onFocus: _react2.default.PropTypes.func,
openToDate: _react2.default.PropTypes.object,
placeholderText: _react2.default.PropTypes.string,
popoverAttachment: _react2.default.PropTypes.string,
popoverTargetAttachment: _react2.default.PropTypes.string,
popoverTargetOffset: _react2.default.PropTypes.string,
readOnly: _react2.default.PropTypes.bool,
renderCalendarTo: _react2.default.PropTypes.any,
required: _react2.default.PropTypes.bool,
selected: _react2.default.PropTypes.object,
showYearDropdown: _react2.default.PropTypes.bool,
startDate: _react2.default.PropTypes.object,
tabIndex: _react2.default.PropTypes.number,
tetherConstraints: _react2.default.PropTypes.array,
title: _react2.default.PropTypes.string,
todayButton: _react2.default.PropTypes.string
},
getDefaultProps: function getDefaultProps() {
return {
dateFormatCalendar: 'MMMM YYYY',
onChange: function onChange() {},
disabled: false,
onFocus: function onFocus() {},
onBlur: function onBlur() {},
popoverAttachment: 'top left',
popoverTargetAttachment: 'bottom left',
popoverTargetOffset: '10px 0',
tetherConstraints: [{
to: 'window',
attachment: 'together'
}]
};
},
getInitialState: function getInitialState() {
return {
open: false
};
},
setOpen: function setOpen(open) {
this.setState({ open: open });
},
handleFocus: function handleFocus(event) {
this.props.onFocus(event);
this.setOpen(true);
},
handleBlur: function handleBlur(event) {
if (this.state.open) {
this.refs.input.focus();
} else {
this.props.onBlur(event);
}
},
handleCalendarClickOutside: function handleCalendarClickOutside(event) {
this.setOpen(false);
},
handleSelect: function handleSelect(date) {
this.setSelected(date);
this.setOpen(false);
},
setSelected: function setSelected(date) {
if (!(0, _date_utils.isSameDay)(this.props.selected, date)) {
this.props.onChange(date);
}
},
onInputClick: function onInputClick() {
if (!this.props.disabled) {
this.setOpen(true);
}
},
onInputKeyDown: function onInputKeyDown(event) {
if (event.key === 'Enter' || event.key === 'Escape') {
event.preventDefault();
this.setOpen(false);
} else if (event.key === 'Tab') {
this.setOpen(false);
}
},
onClearClick: function onClearClick(event) {
event.preventDefault();
this.props.onChange(null);
},
renderCalendar: function renderCalendar() {
if (!this.props.inline && (!this.state.open || this.props.disabled)) {
return null;
}
return _react2.default.createElement(_calendar2.default, {
ref: 'calendar',
locale: this.props.locale,
dateFormat: this.props.dateFormatCalendar,
selected: this.props.selected,
onSelect: this.handleSelect,
openToDate: this.props.openToDate,
minDate: this.props.minDate,
maxDate: this.props.maxDate,
startDate: this.props.startDate,
endDate: this.props.endDate,
excludeDates: this.props.excludeDates,
filterDate: this.props.filterDate,
onClickOutside: this.handleCalendarClickOutside,
includeDates: this.props.includeDates,
showYearDropdown: this.props.showYearDropdown,
todayButton: this.props.todayButton,
outsideClickIgnoreClass: outsideClickIgnoreClass,
fixedHeight: this.props.fixedHeight });
},
renderDateInput: function renderDateInput() {
var className = (0, _classnames3.default)(this.props.className, _defineProperty({}, outsideClickIgnoreClass, this.state.open));
return _react2.default.createElement(_date_input2.default, {
ref: 'input',
id: this.props.id,
name: this.props.name,
date: this.props.selected,
locale: this.props.locale,
minDate: this.props.minDate,
maxDate: this.props.maxDate,
excludeDates: this.props.excludeDates,
includeDates: this.props.includeDates,
filterDate: this.props.filterDate,
dateFormat: this.props.dateFormat,
onFocus: this.handleFocus,
onBlur: this.handleBlur,
onClick: this.onInputClick,
onKeyDown: this.onInputKeyDown,
onChangeDate: this.setSelected,
placeholder: this.props.placeholderText,
disabled: this.props.disabled,
autoComplete: this.props.autoComplete,
className: className,
title: this.props.title,
readOnly: this.props.readOnly,
required: this.props.required,
tabIndex: this.props.tabIndex });
},
renderClearButton: function renderClearButton() {
if (this.props.isClearable && this.props.selected != null) {
return _react2.default.createElement('a', { className: 'react-datepicker__close-icon', href: '#', onClick: this.onClearClick });
} else {
return null;
}
},
render: function render() {
var calendar = this.renderCalendar();
if (this.props.inline) {
return calendar;
} else {
return _react2.default.createElement(
_tether_component2.default,
{
classPrefix: "react-datepicker__tether",
attachment: this.props.popoverAttachment,
targetAttachment: this.props.popoverTargetAttachment,
targetOffset: this.props.popoverTargetOffset,
renderElementTo: this.props.renderCalendarTo,
constraints: this.props.tetherConstraints },
_react2.default.createElement(
'div',
{ className: 'react-datepicker__input-container' },
this.renderDateInput(),
this.renderClearButton()
),
calendar
);
}
}
});
module.exports = DatePicker;
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
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 _moment = __webpack_require__(2);
var _moment2 = _interopRequireDefault(_moment);
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _date_utils = __webpack_require__(4);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var DateInput = _react2.default.createClass({
displayName: 'DateInput',
propTypes: {
date: _react2.default.PropTypes.object,
dateFormat: _react2.default.PropTypes.string,
disabled: _react2.default.PropTypes.bool,
excludeDates: _react2.default.PropTypes.array,
filterDate: _react2.default.PropTypes.func,
includeDates: _react2.default.PropTypes.array,
locale: _react2.default.PropTypes.string,
maxDate: _react2.default.PropTypes.object,
minDate: _react2.default.PropTypes.object,
onBlur: _react2.default.PropTypes.func,
onChange: _react2.default.PropTypes.func,
onChangeDate: _react2.default.PropTypes.func
},
getDefaultProps: function getDefaultProps() {
return {
dateFormat: 'L'
};
},
getInitialState: function getInitialState() {
return {
value: this.safeDateFormat(this.props)
};
},
componentWillReceiveProps: function componentWillReceiveProps(newProps) {
if (!(0, _date_utils.isSameDay)(newProps.date, this.props.date) || newProps.locale !== this.props.locale || newProps.dateFormat !== this.props.dateFormat) {
this.setState({
value: this.safeDateFormat(newProps)
});
}
},
handleChange: function handleChange(event) {
if (this.props.onChange) {
this.props.onChange(event);
}
if (!event.isDefaultPrevented()) {
this.handleChangeDate(event.target.value);
}
},
handleChangeDate: function handleChangeDate(value) {
if (this.props.onChangeDate) {
var date = (0, _moment2.default)(value, this.props.dateFormat, this.props.locale || _moment2.default.locale(), true);
if (date.isValid() && !(0, _date_utils.isDayDisabled)(date, this.props)) {
this.props.onChangeDate(date);
} else if (value === '') {
this.props.onChangeDate(null);
}
}
this.setState({ value: value });
},
safeDateFormat: function safeDateFormat(props) {
return props.date && props.date.clone().locale(props.locale || _moment2.default.locale()).format(props.dateFormat) || '';
},
handleBlur: function handleBlur(event) {
this.setState({
value: this.safeDateFormat(this.props)
});
if (this.props.onBlur) {
this.props.onBlur(event);
}
},
focus: function focus() {
this.refs.input.focus();
},
render: function render() {
var _props = this.props;
var date = _props.date;
var locale = _props.locale;
var minDate = _props.minDate;
var maxDate = _props.maxDate;
var excludeDates = _props.excludeDates;
var includeDates = _props.includeDates;
var filterDate = _props.filterDate;
var dateFormat = _props.dateFormat;
var onChangeDate = _props.onChangeDate;
var rest = _objectWithoutProperties(_props, ['date', 'locale', 'minDate', 'maxDate', 'excludeDates', 'includeDates', 'filterDate', 'dateFormat', 'onChangeDate']); // eslint-disable-line no-unused-vars
return _react2.default.createElement('input', _extends({
ref: 'input',
type: 'text'
}, rest, {
value: this.state.value,
onBlur: this.handleBlur,
onChange: this.handleChange }));
}
});
module.exports = DateInput;
/***/ },
/* 2 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
/***/ },
/* 3 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isSameDay = isSameDay;
exports.isDayDisabled = isDayDisabled;
exports.allDaysDisabledBefore = allDaysDisabledBefore;
exports.allDaysDisabledAfter = allDaysDisabledAfter;
exports.getEffectiveMinDate = getEffectiveMinDate;
exports.getEffectiveMaxDate = getEffectiveMaxDate;
var _moment = __webpack_require__(2);
var _moment2 = _interopRequireDefault(_moment);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function isSameDay(moment1, moment2) {
if (moment1 && moment2) {
return moment1.isSame(moment2, 'day');
} else {
return !moment1 && !moment2;
}
}
function isDayDisabled(day) {
var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var minDate = _ref.minDate;
var maxDate = _ref.maxDate;
var excludeDates = _ref.excludeDates;
var includeDates = _ref.includeDates;
var filterDate = _ref.filterDate;
return minDate && day.isBefore(minDate, 'day') || maxDate && day.isAfter(maxDate, 'day') || excludeDates && excludeDates.some(function (excludeDate) {
return isSameDay(day, excludeDate);
}) || includeDates && !includeDates.some(function (includeDate) {
return isSameDay(day, includeDate);
}) || filterDate && !filterDate(day.clone()) || false;
}
function allDaysDisabledBefore(day, unit) {
var _ref2 = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var minDate = _ref2.minDate;
var includeDates = _ref2.includeDates;
var dateBefore = day.clone().subtract(1, unit);
return minDate && dateBefore.isBefore(minDate, unit) || includeDates && includeDates.every(function (includeDate) {
return dateBefore.isBefore(includeDate, unit);
}) || false;
}
function allDaysDisabledAfter(day, unit) {
var _ref3 = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var maxDate = _ref3.maxDate;
var includeDates = _ref3.includeDates;
var dateAfter = day.clone().add(1, unit);
return maxDate && dateAfter.isAfter(maxDate, unit) || includeDates && includeDates.every(function (includeDate) {
return dateAfter.isAfter(includeDate, unit);
}) || false;
}
function getEffectiveMinDate(_ref4) {
var minDate = _ref4.minDate;
var includeDates = _ref4.includeDates;
if (includeDates && minDate) {
return _moment2.default.min(includeDates.filter(function (includeDate) {
return minDate.isSameOrBefore(includeDate, 'day');
}));
} else if (includeDates) {
return _moment2.default.min(includeDates);
} else {
return minDate;
}
}
function getEffectiveMaxDate(_ref5) {
var maxDate = _ref5.maxDate;
var includeDates = _ref5.includeDates;
if (includeDates && maxDate) {
return _moment2.default.max(includeDates.filter(function (includeDate) {
return maxDate.isSameOrAfter(includeDate, 'day');
}));
} else if (includeDates) {
return _moment2.default.max(includeDates);
} else {
return maxDate;
}
}
/***/ },
/* 5 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _moment = __webpack_require__(2);
var _moment2 = _interopRequireDefault(_moment);
var _year_dropdown = __webpack_require__(6);
var _year_dropdown2 = _interopRequireDefault(_year_dropdown);
var _month = __webpack_require__(9);
var _month2 = _interopRequireDefault(_month);
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _date_utils = __webpack_require__(4);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Calendar = _react2.default.createClass({
displayName: 'Calendar',
propTypes: {
dateFormat: _react2.default.PropTypes.string.isRequired,
endDate: _react2.default.PropTypes.object,
excludeDates: _react2.default.PropTypes.array,
filterDate: _react2.default.PropTypes.func,
fixedHeight: _react2.default.PropTypes.bool,
includeDates: _react2.default.PropTypes.array,
locale: _react2.default.PropTypes.string,
maxDate: _react2.default.PropTypes.object,
minDate: _react2.default.PropTypes.object,
onClickOutside: _react2.default.PropTypes.func.isRequired,
onSelect: _react2.default.PropTypes.func.isRequired,
openToDate: _react2.default.PropTypes.object,
selected: _react2.default.PropTypes.object,
showYearDropdown: _react2.default.PropTypes.bool,
startDate: _react2.default.PropTypes.object,
todayButton: _react2.default.PropTypes.string
},
mixins: [__webpack_require__(8)],
getInitialState: function getInitialState() {
return {
date: this.localizeMoment(this.getDateInView())
};
},
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
if (nextProps.selected && !(0, _date_utils.isSameDay)(nextProps.selected, this.props.selected)) {
this.setState({
date: this.localizeMoment(nextProps.selected)
});
}
},
handleClickOutside: function handleClickOutside(event) {
this.props.onClickOutside(event);
},
getDateInView: function getDateInView() {
var _props = this.props;
var selected = _props.selected;
var openToDate = _props.openToDate;
var minDate = (0, _date_utils.getEffectiveMinDate)(this.props);
var maxDate = (0, _date_utils.getEffectiveMaxDate)(this.props);
var current = (0, _moment2.default)();
if (selected) {
return selected;
} else if (minDate && maxDate && openToDate && openToDate.isBetween(minDate, maxDate)) {
return openToDate;
} else if (minDate && openToDate && openToDate.isAfter(minDate)) {
return openToDate;
} else if (minDate && minDate.isAfter(current)) {
return minDate;
} else if (maxDate && openToDate && openToDate.isBefore(maxDate)) {
return openToDate;
} else if (maxDate && maxDate.isBefore(current)) {
return maxDate;
} else if (openToDate) {
return openToDate;
} else {
return current;
}
},
localizeMoment: function localizeMoment(date) {
return date.clone().locale(this.props.locale || _moment2.default.locale());
},
increaseMonth: function increaseMonth() {
this.setState({
date: this.state.date.clone().add(1, 'month')
});
},
decreaseMonth: function decreaseMonth() {
this.setState({
date: this.state.date.clone().subtract(1, 'month')
});
},
handleDayClick: function handleDayClick(day) {
this.props.onSelect(day);
},
changeYear: function changeYear(year) {
this.setState({
date: this.state.date.clone().set('year', year)
});
},
header: function header() {
var startOfWeek = this.state.date.clone().startOf('week');
return [0, 1, 2, 3, 4, 5, 6].map(function (offset) {
var day = startOfWeek.clone().add(offset, 'days');
return _react2.default.createElement(
'div',
{ key: offset, className: 'react-datepicker__day-name' },
day.localeData().weekdaysMin(day)
);
});
},
renderPreviousMonthButton: function renderPreviousMonthButton() {
if ((0, _date_utils.allDaysDisabledBefore)(this.state.date, 'month', this.props)) {
return;
}
return _react2.default.createElement('a', {
className: 'react-datepicker__navigation react-datepicker__navigation--previous',
onClick: this.decreaseMonth });
},
renderNextMonthButton: function renderNextMonthButton() {
if ((0, _date_utils.allDaysDisabledAfter)(this.state.date, 'month', this.props)) {
return;
}
return _react2.default.createElement('a', {
className: 'react-datepicker__navigation react-datepicker__navigation--next',
onClick: this.increaseMonth });
},
renderCurrentMonth: function renderCurrentMonth() {
var classes = ['react-datepicker__current-month'];
if (this.props.showYearDropdown) {
classes.push('react-datepicker__current-month--hasYearDropdown');
}
return _react2.default.createElement(
'div',
{ className: classes.join(' ') },
this.state.date.format(this.props.dateFormat)
);
},
renderYearDropdown: function renderYearDropdown() {
if (!this.props.showYearDropdown) {
return;
}
return _react2.default.createElement(_year_dropdown2.default, {
onChange: this.changeYear,
year: this.state.date.year() });
},
renderTodayButton: function renderTodayButton() {
var _this = this;
if (!this.props.todayButton) {
return;
}
return _react2.default.createElement(
'div',
{ className: 'react-datepicker__today-button', onClick: function onClick() {
return _this.props.onSelect((0, _moment2.default)());
} },
this.props.todayButton
);
},
render: function render() {
return _react2.default.createElement(
'div',
{ className: 'react-datepicker' },
_react2.default.createElement('div', { className: 'react-datepicker__triangle' }),
_react2.default.createElement(
'div',
{ className: 'react-datepicker__header' },
this.renderPreviousMonthButton(),
this.renderCurrentMonth(),
this.renderYearDropdown(),
this.renderNextMonthButton(),
_react2.default.createElement(
'div',
null,
this.header()
)
),
_react2.default.createElement(_month2.default, {
day: this.state.date,
onDayClick: this.handleDayClick,
minDate: this.props.minDate,
maxDate: this.props.maxDate,
excludeDates: this.props.excludeDates,
includeDates: this.props.includeDates,
fixedHeight: this.props.fixedHeight,
filterDate: this.props.filterDate,
selected: this.props.selected,
startDate: this.props.startDate,
endDate: this.props.endDate }),
this.renderTodayButton()
);
}
});
module.exports = Calendar;
/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _year_dropdown_options = __webpack_require__(7);
var _year_dropdown_options2 = _interopRequireDefault(_year_dropdown_options);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var YearDropdown = _react2.default.createClass({
displayName: 'YearDropdown',
propTypes: {
onChange: _react2.default.PropTypes.func.isRequired,
year: _react2.default.PropTypes.number.isRequired
},
getInitialState: function getInitialState() {
return {
dropdownVisible: false
};
},
renderReadView: function renderReadView() {
return _react2.default.createElement(
'div',
{ className: 'react-datepicker__year-read-view', onClick: this.toggleDropdown },
_react2.default.createElement(
'span',
{ className: 'react-datepicker__year-read-view--selected-year' },
this.props.year
),
_react2.default.createElement('span', { className: 'react-datepicker__year-read-view--down-arrow' })
);
},
renderDropdown: function renderDropdown() {
return _react2.default.createElement(_year_dropdown_options2.default, {
ref: 'options',
year: this.props.year,
onChange: this.onChange,
onCancel: this.toggleDropdown });
},
onChange: function onChange(year) {
this.toggleDropdown();
if (year === this.props.year) return;
this.props.onChange(year);
},
toggleDropdown: function toggleDropdown() {
this.setState({
dropdownVisible: !this.state.dropdownVisible
});
},
render: function render() {
return _react2.default.createElement(
'div',
null,
this.state.dropdownVisible ? this.renderDropdown() : this.renderReadView()
);
}
});
module.exports = YearDropdown;
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function generateYears(year) {
var list = [];
for (var i = 0; i < 5; i++) {
list.push(year - i);
}
return list;
}
var YearDropdownOptions = _react2.default.createClass({
displayName: 'YearDropdownOptions',
propTypes: {
onCancel: _react2.default.PropTypes.func.isRequired,
onChange: _react2.default.PropTypes.func.isRequired,
year: _react2.default.PropTypes.number.isRequired
},
mixins: [__webpack_require__(8)],
getInitialState: function getInitialState() {
return {
yearsList: generateYears(this.props.year)
};
},
renderOptions: function renderOptions() {
var _this = this;
var selectedYear = this.props.year;
var options = this.state.yearsList.map(function (year) {
return _react2.default.createElement(
'div',
{ className: 'react-datepicker__year-option',
key: year,
onClick: _this.onChange.bind(_this, year) },
selectedYear === year ? _react2.default.createElement(
'span',
{ className: 'react-datepicker__year-option--selected' },
'✓'
) : '',
year
);
});
options.unshift(_react2.default.createElement(
'div',
{ className: 'react-datepicker__year-option',
ref: "upcoming",
key: "upcoming",
onClick: this.incrementYears },
_react2.default.createElement('a', { className: 'react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming' })
));
options.push(_react2.default.createElement(
'div',
{ className: 'react-datepicker__year-option',
ref: "previous",
key: "previous",
onClick: this.decrementYears },
_react2.default.createElement('a', { className: 'react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous' })
));
return options;
},
onChange: function onChange(year) {
this.props.onChange(year);
},
handleClickOutside: function handleClickOutside() {
this.props.onCancel();
},
shiftYears: function shiftYears(amount) {
var years = this.state.yearsList.map(function (year) {
return year + amount;
});
this.setState({
yearsList: years
});
},
incrementYears: function incrementYears() {
return this.shiftYears(1);
},
decrementYears: function decrementYears() {
return this.shiftYears(-1);
},
render: function render() {
return _react2.default.createElement(
'div',
{ className: 'react-datepicker__year-dropdown' },
this.renderOptions()
);
}
});
module.exports = YearDropdownOptions;
/***/ },
/* 8 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_8__;
/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _week = __webpack_require__(10);
var _week2 = _interopRequireDefault(_week);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Month = _react2.default.createClass({
displayName: 'Month',
propTypes: {
day: _react2.default.PropTypes.object.isRequired,
endDate: _react2.default.PropTypes.object,
excludeDates: _react2.default.PropTypes.array,
filterDate: _react2.default.PropTypes.func,
fixedHeight: _react2.default.PropTypes.bool,
includeDates: _react2.default.PropTypes.array,
maxDate: _react2.default.PropTypes.object,
minDate: _react2.default.PropTypes.object,
onDayClick: _react2.default.PropTypes.func,
selected: _react2.default.PropTypes.object,
startDate: _react2.default.PropTypes.object
},
handleDayClick: function handleDayClick(day) {
if (this.props.onDayClick) {
this.props.onDayClick(day);
}
},
isWeekInMonth: function isWeekInMonth(startOfWeek) {
var day = this.props.day;
var endOfWeek = startOfWeek.clone().add(6, 'days');
return startOfWeek.isSame(day, 'month') || endOfWeek.isSame(day, 'month');
},
renderWeeks: function renderWeeks() {
var _this = this;
var startOfMonth = this.props.day.clone().startOf('month').startOf('week');
return [0, 1, 2, 3, 4, 5].map(function (offset) {
return startOfMonth.clone().add(offset, 'weeks');
}).filter(function (startOfWeek) {
return _this.props.fixedHeight || _this.isWeekInMonth(startOfWeek);
}).map(function (startOfWeek, offset) {
return _react2.default.createElement(_week2.default, {
key: offset,
day: startOfWeek,
month: _this.props.day.month(),
onDayClick: _this.handleDayClick,
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
excludeDates: _this.props.excludeDates,
includeDates: _this.props.includeDates,
filterDate: _this.props.filterDate,
selected: _this.props.selected,
startDate: _this.props.startDate,
endDate: _this.props.endDate });
});
},
render: function render() {
return _react2.default.createElement(
'div',
{ className: 'react-datepicker__month' },
this.renderWeeks()
);
}
});
module.exports = Month;
/***/ },
/* 10 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _day = __webpack_require__(11);
var _day2 = _interopRequireDefault(_day);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Week = _react2.default.createClass({
displayName: 'Week',
propTypes: {
day: _react2.default.PropTypes.object.isRequired,
endDate: _react2.default.PropTypes.object,
excludeDates: _react2.default.PropTypes.array,
filterDate: _react2.default.PropTypes.func,
includeDates: _react2.default.PropTypes.array,
maxDate: _react2.default.PropTypes.object,
minDate: _react2.default.PropTypes.object,
month: _react2.default.PropTypes.number,
onDayClick: _react2.default.PropTypes.func,
selected: _react2.default.PropTypes.object,
startDate: _react2.default.PropTypes.object
},
handleDayClick: function handleDayClick(day) {
if (this.props.onDayClick) {
this.props.onDayClick(day);
}
},
renderDays: function renderDays() {
var _this = this;
var startOfWeek = this.props.day.clone().startOf('week');
return [0, 1, 2, 3, 4, 5, 6].map(function (offset) {
var day = startOfWeek.clone().add(offset, 'days');
return _react2.default.createElement(_day2.default, {
key: offset,
day: day,
month: _this.props.month,
onClick: _this.handleDayClick.bind(_this, day),
minDate: _this.props.minDate,
maxDate: _this.props.maxDate,
excludeDates: _this.props.excludeDates,
includeDates: _this.props.includeDates,
filterDate: _this.props.filterDate,
selected: _this.props.selected,
startDate: _this.props.startDate,
endDate: _this.props.endDate });
});
},
render: function render() {
return _react2.default.createElement(
'div',
{ className: 'react-datepicker__week' },
this.renderDays()
);
}
});
module.exports = Week;
/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _moment = __webpack_require__(2);
var _moment2 = _interopRequireDefault(_moment);
var _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _classnames = __webpack_require__(12);
var _classnames2 = _interopRequireDefault(_classnames);
var _date_utils = __webpack_require__(4);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Day = _react2.default.createClass({
displayName: 'Day',
propTypes: {
day: _react2.default.PropTypes.object.isRequired,
endDate: _react2.default.PropTypes.object,
excludeDates: _react2.default.PropTypes.array,
filterDate: _react2.default.PropTypes.func,
includeDates: _react2.default.PropTypes.array,
maxDate: _react2.default.PropTypes.object,
minDate: _react2.default.PropTypes.object,
month: _react2.default.PropTypes.number,
onClick: _react2.default.PropTypes.func,
selected: _react2.default.PropTypes.object,
startDate: _react2.default.PropTypes.object
},
handleClick: function handleClick(event) {
if (!this.isDisabled() && this.props.onClick) {
this.props.onClick(event);
}
},
isSameDay: function isSameDay(other) {
return (0, _date_utils.isSameDay)(this.props.day, other);
},
isDisabled: function isDisabled() {
return (0, _date_utils.isDayDisabled)(this.props.day, this.props);
},
isInRange: function isInRange() {
var _props = this.props;
var day = _props.day;
var startDate = _props.startDate;
var endDate = _props.endDate;
if (!startDate || !endDate) return false;
var before = startDate.clone().startOf('day').subtract(1, 'seconds');
var after = endDate.clone().startOf('day').add(1, 'seconds');
return day.clone().startOf('day').isBetween(before, after);
},
isWeekend: function isWeekend() {
var weekday = this.props.day.day();
return weekday === 0 || weekday === 6;
},
isOutsideMonth: function isOutsideMonth() {
return this.props.month !== undefined && this.props.month !== this.props.day.month();
},
getClassNames: function getClassNames() {
return (0, _classnames2.default)('react-datepicker__day', {
'react-datepicker__day--disabled': this.isDisabled(),
'react-datepicker__day--selected': this.isSameDay(this.props.selected),
'react-datepicker__day--in-range': this.isInRange(),
'react-datepicker__day--today': this.isSameDay((0, _moment2.default)()),
'react-datepicker__day--weekend': this.isWeekend(),
'react-datepicker__day--outside-month': this.isOutsideMonth()
});
},
render: function render() {
return _react2.default.createElement(
'div',
{ className: this.getClassNames(), onClick: this.handleClick },
this.props.day.date()
);
}
});
module.exports = Day;
/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Copyright (c) 2016 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
'use strict';
var hasOwn = {}.hasOwnProperty;
function classNames () {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (!arg) continue;
var argType = typeof arg;
if (argType === 'string' || argType === 'number') {
classes.push(arg);
} else if (Array.isArray(arg)) {
classes.push(classNames.apply(null, arg));
} else if (argType === 'object') {
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes.push(key);
}
}
}
}
return classes.join(' ');
}
if (typeof module !== 'undefined' && module.exports) {
module.exports = classNames;
} else if (true) {
// register as 'classnames', consistent with npm package name
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
return classNames;
}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {
window.classNames = classNames;
}
}());
/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
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 _react = __webpack_require__(3);
var _react2 = _interopRequireDefault(_react);
var _reactDom = __webpack_require__(14);
var _reactDom2 = _interopRequireDefault(_reactDom);
var _tether = __webpack_require__(15);
var _tether2 = _interopRequireDefault(_tether);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function childrenPropType(_ref, propName, componentName) {
var children = _ref.children;
var childCount = _react.Children.count(children);
if (childCount <= 0) {
return new Error(componentName + ' expects at least one child to use as the target element.');
} else if (childCount > 2) {
return new Error('Only a max of two children allowed in ' + componentName + '.');
}
}
var attachmentPositions = ['top left', 'top center', 'top right', 'middle left', 'middle center', 'middle right', 'bottom left', 'bottom center', 'bottom right'];
var TetherComponent = _react2.default.createClass({
displayName: 'TetherComponent',
propTypes: {
attachment: _react.PropTypes.oneOf(attachmentPositions).isRequired,
children: childrenPropType,
className: _react.PropTypes.string,
classPrefix: _react.PropTypes.string,
classes: _react.PropTypes.object,
constraints: _react.PropTypes.array,
enabled: _react.PropTypes.bool,
id: _react.PropTypes.string,
offset: _react.PropTypes.string,
optimizations: _react.PropTypes.object,
renderElementTag: _react.PropTypes.string,
renderElementTo: _react.PropTypes.any,
style: _react.PropTypes.object,
targetAttachment: _react.PropTypes.oneOf(attachmentPositions),
targetModifier: _react.PropTypes.string,
targetOffset: _react.PropTypes.string
},
getDefaultProps: function getDefaultProps() {
return {
renderElementTag: 'div',
renderElementTo: null
};
},
componentDidMount: function componentDidMount() {
this._targetNode = _reactDom2.default.findDOMNode(this);
this._update();
},
componentDidUpdate: function componentDidUpdate() {
this._update();
},
componentWillUnmount: function componentWillUnmount() {
this._destroy();
},
disable: function disable() {
this._tether.disable();
},
enable: function enable() {
this._tether.enable();
},
position: function position() {
this._tether.position();
},
_destroy: function _destroy() {
if (this._elementParentNode) {
_reactDom2.default.unmountComponentAtNode(this._elementParentNode);
this._elementParentNode.parentNode.removeChild(this._elementParentNode);
}
if (this._tether) {
this._tether.destroy();
}
this._elementParentNode = null;
this._tether = null;
},
_update: function _update() {
var _this = this;
var _props = this.props;
var children = _props.children;
var renderElementTag = _props.renderElementTag;
var renderElementTo = _props.renderElementTo;
var elementComponent = children[1];
// if no element component provided, bail out
if (!elementComponent) {
// destroy Tether elements if they have been created
if (this._tether) {
this._destroy();
}
return;
}
// create element node container if it hasn't been yet
if (!this._elementParentNode) {
// create a node that we can stick our content Component in
this._elementParentNode = document.createElement(renderElementTag);
// append node to the end of the body
var renderTo = renderElementTo || document.body;
renderTo.appendChild(this._elementParentNode);
}
// render element component into the DOM
_reactDom2.default.unstable_renderSubtreeIntoContainer(this, elementComponent, this._elementParentNode, function () {
// don't update Tether until the subtree has finished rendering
_this._updateTether();
});
},
_updateTether: function _updateTether() {
var _props2 = this.props;
var renderElementTag = _props2.renderElementTag;
var renderElementTo = _props2.renderElementTo;
var options = _objectWithoutProperties(_props2, ['renderElementTag', 'renderElementTo']); // eslint-disable-line no-unused-vars
var tetherOptions = _extends({
target: this._targetNode,
element: this._elementParentNode
}, options);
if (!this._tether) {
this._tether = new _tether2.default(tetherOptions);
} else {
this._tether.setOptions(tetherOptions);
}
this._tether.position();
},
render: function render() {
var children = this.props.children;
var firstChild = null;
// we use forEach because the second child could be null
// causing children to not be an array
_react.Children.forEach(children, function (child, index) {
if (index === 0) {
firstChild = child;
return;
}
});
return firstChild;
}
});
module.exports = TetherComponent;
/***/ },
/* 14 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_14__;
/***/ },
/* 15 */
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! tether 1.3.3 */
(function(root, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else if (typeof exports === 'object') {
module.exports = factory(require, exports, module);
} else {
root.Tether = factory();
}
}(this, function(require, exports, module) {
'use strict';
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; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var TetherBase = undefined;
if (typeof TetherBase === 'undefined') {
TetherBase = { modules: [] };
}
var zeroElement = null;
// Same as native getBoundingClientRect, except it takes into account parent offsets
// if the element lies within a nested document ( or