From 06f2fa6cad7326cf85d15577f3b5aca1487d5f0b Mon Sep 17 00:00:00 2001 From: Cam Jackson Date: Thu, 19 Nov 2015 16:31:35 +1100 Subject: [PATCH 01/73] Add month picker option to mode --- README.md | 4 +- examples/basic/basic.js | 33 ++++--- src/Constants.js | 1 + src/DateTimeField.js | 20 +++- src/DateTimePicker.js | 5 +- src/DateTimePickerDate.js | 8 ++ src/DateTimePickerMonths.js | 8 +- src/__tests__/DateTimePickerDate-test.js | 104 +++++++++++++++++++++ src/__tests__/DateTimePickerMonths-test.js | 28 +++++- 9 files changed, 192 insertions(+), 19 deletions(-) create mode 100644 src/__tests__/DateTimePickerDate-test.js diff --git a/README.md b/README.md index d3960fc4..849e6bad 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ DateTimeField | ------------ | ------- | ------- | ----------- | | **dateTime** | string | moment().format('x') | Represents the inital dateTime, this string is then parsed by moment.js | | **format** | string | "x" | Defines the format moment.js should use to parse and output the date to onChange | -| **inputFormat** | string | "MM/DD/YY h:mm A" | Defines the way the date is represented in the HTML input. It must be a format understanable by moment.js | +| **inputFormat** | string | "MM/DD/YY h:mm A" | Defines the way the date is represented in the HTML input. It must be a format understandable by moment.js | | **onChange** | function | x => console.log(x) | Callback trigger when the date changes. `x` is the new datetime value. | | **showToday** | boolean | true | Highlights today's date | | **size** | string | "md" | Changes the size of the date picker input field. Sizes: "sm", "md", "lg" | @@ -42,7 +42,7 @@ DateTimeField | **inputProps** | object | undefined | Defines additional attributes for the input element of the component. | | **minDate** | moment | undefined | The earliest date allowed for entry in the calendar view. | | **maxDate** | moment | undefined | The latest date allowed for entry in the calendar view. | -| **mode** | string | undefined | Allows to selectively display only the time picker ('time') or the date picker ('date') | +| **mode** | string | undefined | Allows to selectively display only the time picker ('time'), date picker ('date'), or month picker ('month') | | **defaultText** | string | {dateTime} | Sets the initial value. Could be an empty string, or helper text. | Update Warning diff --git a/examples/basic/basic.js b/examples/basic/basic.js index 4b9a2f16..d8b3935e 100644 --- a/examples/basic/basic.js +++ b/examples/basic/basic.js @@ -102,26 +102,35 @@ class Basic extends Component { maxDate={moment().add(1, "days")} minDate={moment().subtract(1, "days")} /> -
 {''} 
- +
 {''} 
- just time picker - -
 {''} 
+ just time picker + +
 {''} 
- just date picker - -
 {''} 
+ just date picker + +
 {''} 
+
+
+
+
+ just month picker + +
 {''} 
diff --git a/src/Constants.js b/src/Constants.js index 24e68037..15fd32eb 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -1,5 +1,6 @@ module.exports = { MODE_DATE: "date", + MODE_MONTH: "month", MODE_DATETIME: "datetime", MODE_TIME: "time", diff --git a/src/DateTimeField.js b/src/DateTimeField.js index 2e2d342b..76857c2d 100644 --- a/src/DateTimeField.js +++ b/src/DateTimeField.js @@ -25,6 +25,8 @@ export default class DateTimeField extends Component { return "h:mm A"; case Constants.MODE_DATE: return "MM/DD/YY"; + case Constants.MODE_MONTH: + return "MM/YY"; default: return "MM/DD/YY h:mm A"; } @@ -40,7 +42,7 @@ export default class DateTimeField extends Component { inputProps: PropTypes.object, inputFormat: PropTypes.string, defaultText: PropTypes.string, - mode: PropTypes.oneOf([Constants.MODE_DATE, Constants.MODE_DATETIME, Constants.MODE_TIME]), + mode: PropTypes.oneOf([Constants.MODE_DATE, Constants.MODE_MONTH, Constants.MODE_DATETIME, Constants.MODE_TIME]), minDate: PropTypes.object, maxDate: PropTypes.object, direction: PropTypes.string, @@ -104,6 +106,21 @@ export default class DateTimeField extends Component { return moment(this.state.inputValue, this.props.inputFormat, true).format(this.props.format); } + setSelectedMonth = (e) => { + const { target } = e; + if (target.className && !target.className.match(/disabled/g)) { + return this.setState({ + selectedDate: this.state.viewDate.clone().month(e.target.innerHTML).date(this.state.selectedDate.date()).hour(this.state.selectedDate.hours()).minute(this.state.selectedDate.minutes()) + }, function() { + this.closePicker(); + this.props.onChange(this.state.selectedDate.format(this.props.format)); + return this.setState({ + inputValue: this.state.selectedDate.format(this.state.inputFormat) + }); + }); + } + } + setSelectedDate = (e) => { const { target } = e; if (target.className && !target.className.match(/disabled/g)) { @@ -352,6 +369,7 @@ export default class DateTimeField extends Component { mode={this.props.mode} ref="widget" selectedDate={this.state.selectedDate} + setSelectedMonth={this.setSelectedMonth} setSelectedDate={this.setSelectedDate} setSelectedHour={this.setSelectedHour} setSelectedMinute={this.setSelectedMinute} diff --git a/src/DateTimePicker.js b/src/DateTimePicker.js index e1b634a1..3f6927cc 100644 --- a/src/DateTimePicker.js +++ b/src/DateTimePicker.js @@ -17,8 +17,9 @@ export default class DateTimePicker extends Component { PropTypes.string, PropTypes.number ]), - mode: PropTypes.oneOf([Constants.MODE_DATE, Constants.MODE_DATETIME, Constants.MODE_TIME]), + mode: PropTypes.oneOf([Constants.MODE_DATE, Constants.MODE_MONTH, Constants.MODE_DATETIME, Constants.MODE_TIME]), daysOfWeekDisabled: PropTypes.array, + setSelectedMonth: PropTypes.func.isRequired, setSelectedDate: PropTypes.func.isRequired, subtractYear: PropTypes.func.isRequired, addYear: PropTypes.func.isRequired, @@ -52,6 +53,7 @@ export default class DateTimePicker extends Component { maxDate={this.props.maxDate} minDate={this.props.minDate} selectedDate={this.props.selectedDate} + setSelectedMonth={this.props.setSelectedMonth} setSelectedDate={this.props.setSelectedDate} setViewMonth={this.props.setViewMonth} setViewYear={this.props.setViewYear} @@ -61,6 +63,7 @@ export default class DateTimePicker extends Component { subtractYear={this.props.subtractYear} viewDate={this.props.viewDate} viewMode={this.props.viewMode} + mode={this.props.mode} /> ); diff --git a/src/DateTimePickerDate.js b/src/DateTimePickerDate.js index df3cb868..760914a6 100644 --- a/src/DateTimePickerDate.js +++ b/src/DateTimePickerDate.js @@ -2,6 +2,7 @@ import React, { Component, PropTypes } from "react"; import DateTimePickerDays from "./DateTimePickerDays"; import DateTimePickerMonths from "./DateTimePickerMonths"; import DateTimePickerYears from "./DateTimePickerYears"; +import Constants from "./Constants.js"; export default class DateTimePickerDate extends Component { static propTypes = { @@ -14,7 +15,9 @@ export default class DateTimePickerDate extends Component { PropTypes.string, PropTypes.number ]), + mode: PropTypes.oneOf([Constants.MODE_DATE, Constants.MODE_MONTH, Constants.MODE_DATETIME]), daysOfWeekDisabled: PropTypes.array, + setSelectedMonth: PropTypes.func.isRequired, setSelectedDate: PropTypes.func.isRequired, subtractYear: PropTypes.func.isRequired, addYear: PropTypes.func.isRequired, @@ -46,6 +49,9 @@ export default class DateTimePickerDate extends Component { } }; this.state = viewModes[this.props.viewMode] || viewModes[Object.keys(viewModes)[this.props.viewMode]] || viewModes.days; + if (this.state.daysDisplayed && this.props.mode === Constants.MODE_MONTH) { + this.state = viewModes.months; + } } showMonths = () => { @@ -105,10 +111,12 @@ export default class DateTimePickerDate extends Component { ); } else { diff --git a/src/DateTimePickerMonths.js b/src/DateTimePickerMonths.js index b09e1c07..eb851241 100644 --- a/src/DateTimePickerMonths.js +++ b/src/DateTimePickerMonths.js @@ -1,6 +1,7 @@ import React, { Component, PropTypes } from "react"; import classnames from "classnames"; import moment from "moment"; +import Constants from "./Constants.js"; export default class DateTimePickerMonths extends Component { static propTypes = { @@ -9,11 +10,14 @@ export default class DateTimePickerMonths extends Component { viewDate: PropTypes.object.isRequired, selectedDate: PropTypes.object.isRequired, showYears: PropTypes.func.isRequired, - setViewMonth: PropTypes.func.isRequired + setViewMonth: PropTypes.func.isRequired, + setSelectedMonth: PropTypes.func.isRequired, + mode: PropTypes.oneOf([Constants.MODE_DATE, Constants.MODE_MONTH, Constants.MODE_DATETIME]) } renderMonths = () => { var classes, i, month, months, monthsShort; + const onClick = this.props.mode === Constants.MODE_MONTH ? this.props.setSelectedMonth : this.props.setViewMonth; month = this.props.selectedDate.month(); monthsShort = moment.monthsShort(); i = 0; @@ -23,7 +27,7 @@ export default class DateTimePickerMonths extends Component { month: true, "active": i === month && this.props.viewDate.year() === this.props.selectedDate.year() }; - months.push({monthsShort[i]}); + months.push({monthsShort[i]}); i++; } return months; diff --git a/src/__tests__/DateTimePickerDate-test.js b/src/__tests__/DateTimePickerDate-test.js new file mode 100644 index 00000000..fac97c08 --- /dev/null +++ b/src/__tests__/DateTimePickerDate-test.js @@ -0,0 +1,104 @@ +import React from "react"; +import TestUtils from "react-addons-test-utils"; + +jest.dontMock("moment"); +jest.dontMock("../DateTimePickerDate.js"); + +describe("DateTimePickerDate", function() { + const moment = require("moment"); + const DateTimePickerDate = require("../DateTimePickerDate.js"); + + let subtractMonthMock, addMonthMock, viewDate, selectedDate, setSelectedMonthMock, setSelectedDateMock, + subtractYearMock, addYearMock, setViewMonthMock, setViewYearMock, addDecadeMock, subtractDecadeMock; + + + beforeEach(() => { + subtractMonthMock = jest.genMockFunction(); + addMonthMock = jest.genMockFunction(); + viewDate = moment(); + selectedDate = moment(); + setSelectedMonthMock = jest.genMockFunction(); + setSelectedDateMock = jest.genMockFunction(); + subtractYearMock = jest.genMockFunction(); + addYearMock = jest.genMockFunction(); + setViewMonthMock = jest.genMockFunction(); + setViewYearMock = jest.genMockFunction(); + addDecadeMock = jest.genMockFunction(); + subtractDecadeMock = jest.genMockFunction(); + }) + + function render(args) { + let {viewMode, mode} = args; + return TestUtils.renderIntoDocument() + } + + describe("initial state", function() { + describe("when it is a regular date picker", function() { + it("shows days by default", function() { + let picker = render({}); + + expect(picker.state.daysDisplayed).toBe(true); + }) + + it("shows days when that is the view mode", function() { + let picker = render({viewMode: "days"}); + + expect(picker.state.daysDisplayed).toBe(true); + }) + + it("shows months when that is the view mode", function() { + let picker = render({viewMode: "months"}); + + expect(picker.state.monthsDisplayed).toBe(true); + }) + + it("shows years when that is the view mode", function() { + let picker = render({viewMode: "years"}); + + expect(picker.state.yearsDisplayed).toBe(true); + }) + }) + + describe("when it is a month picker", function() { + it("shows months by default", function() { + let picker = render({mode: "month"}); + + expect(picker.state.monthsDisplayed).toBe(true); + }) + + it("shows months when the view mode is explicitly days", function() { + let picker = render({viewMode: "days", mode: "month"}); + + expect(picker.state.monthsDisplayed).toBe(true); + }) + + it("shows months when that is the view mode", function() { + let picker = render({viewMode: "months", mode: "month"}); + + expect(picker.state.monthsDisplayed).toBe(true); + }) + + it("shows years when that is the view mode", function() { + let picker = render({viewMode: "years", mode: "month"}); + + expect(picker.state.yearsDisplayed).toBe(true); + }) + }) + }); + +}); diff --git a/src/__tests__/DateTimePickerMonths-test.js b/src/__tests__/DateTimePickerMonths-test.js index f9656004..886800b1 100644 --- a/src/__tests__/DateTimePickerMonths-test.js +++ b/src/__tests__/DateTimePickerMonths-test.js @@ -7,13 +7,14 @@ jest.dontMock("../DateTimePickerMonths.js"); describe("DateTimePickerMonths", function() { const moment = require("moment"); const DateTimePickerMonths = require("../DateTimePickerMonths.js"); - let subtractYearMock, addYearMock, setViewMonthMock, showYearsMock, months; + let subtractYearMock, addYearMock, setViewMonthMock, setSelectedMonthMock, showYearsMock, months; beforeEach(() => { subtractYearMock = jest.genMockFunction(); addYearMock = jest.genMockFunction(); showYearsMock = jest.genMockFunction(); setViewMonthMock = jest.genMockFunction(); + setSelectedMonthMock = jest.genMockFunction(); months = TestUtils.renderIntoDocument( ); }); @@ -50,6 +53,27 @@ describe("DateTimePickerMonths", function() { TestUtils.Simulate.click(month); expect(setViewMonthMock.mock.calls.length).toBe(1); }); + + describe("when the date picker mode is set to month picker", function() { + it("calls setSelectedMonth when clicking a month", function() { + months = TestUtils.renderIntoDocument( + + ); + + const month = TestUtils.findRenderedDOMComponentWithClass(months, "active"); + TestUtils.Simulate.click(month); + expect(setSelectedMonthMock.mock.calls.length).toBe(1); + }); + }); }); describe("UI", function() { @@ -77,6 +101,8 @@ describe("DateTimePickerMonths", function() { showYears={showYearsMock} subtractYear={subtractYearMock} viewDate={moment().add(2, "year")} + setSelectedMonth={setSelectedMonthMock} + mode={"date"} /> ); const active = TestUtils.scryRenderedDOMComponentsWithClass(months, "active"); From 51134109cc093edb0944a7a61a40d965f7bd9540 Mon Sep 17 00:00:00 2001 From: Cam Jackson Date: Fri, 20 Nov 2015 12:08:53 +1100 Subject: [PATCH 02/73] Bump version to 0.0.23 --- bower.json | 2 +- dist/react-bootstrap-datetimepicker.js | 105 ++++++++++++++------- dist/react-bootstrap-datetimepicker.min.js | 4 +- package.json | 2 +- 4 files changed, 77 insertions(+), 36 deletions(-) diff --git a/bower.json b/bower.json index 36d867b6..cc91b190 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "react-bootstrap-datetimepicker", - "version": "0.0.22", + "version": "0.0.23", "main": [ "./dist/react-bootstrap-datetimepicker.min.js" ], diff --git a/dist/react-bootstrap-datetimepicker.js b/dist/react-bootstrap-datetimepicker.js index 6fa6d9d3..7608867e 100644 --- a/dist/react-bootstrap-datetimepicker.js +++ b/dist/react-bootstrap-datetimepicker.js @@ -95,7 +95,7 @@ return /******/ (function(modules) { // webpackBootstrap var _DateTimePickerJs2 = _interopRequireDefault(_DateTimePickerJs); - var _ConstantsJs = __webpack_require__(51); + var _ConstantsJs = __webpack_require__(48); var _ConstantsJs2 = _interopRequireDefault(_ConstantsJs); @@ -118,6 +118,8 @@ return /******/ (function(modules) { // webpackBootstrap return "h:mm A"; case _ConstantsJs2["default"].MODE_DATE: return "MM/DD/YY"; + case _ConstantsJs2["default"].MODE_MONTH: + return "MM/YY"; default: return "MM/DD/YY h:mm A"; } @@ -174,6 +176,22 @@ return /******/ (function(modules) { // webpackBootstrap return (0, _moment2["default"])(_this.state.inputValue, _this.props.inputFormat, true).format(_this.props.format); }; + this.setSelectedMonth = function (e) { + var target = e.target; + + if (target.className && !target.className.match(/disabled/g)) { + return _this.setState({ + selectedDate: _this.state.viewDate.clone().month(e.target.innerHTML).date(_this.state.selectedDate.date()).hour(_this.state.selectedDate.hours()).minute(_this.state.selectedDate.minutes()) + }, function () { + this.closePicker(); + this.props.onChange(this.state.selectedDate.format(this.props.format)); + return this.setState({ + inputValue: this.state.selectedDate.format(this.state.inputFormat) + }); + }); + } + }; + this.setSelectedDate = function (e) { var target = e.target; @@ -430,6 +448,7 @@ return /******/ (function(modules) { // webpackBootstrap mode: this.props.mode, ref: "widget", selectedDate: this.state.selectedDate, + setSelectedMonth: this.setSelectedMonth, setSelectedDate: this.setSelectedDate, setSelectedHour: this.setSelectedHour, setSelectedMinute: this.setSelectedMinute, @@ -486,7 +505,7 @@ return /******/ (function(modules) { // webpackBootstrap inputProps: _react.PropTypes.object, inputFormat: _react.PropTypes.string, defaultText: _react.PropTypes.string, - mode: _react.PropTypes.oneOf([_ConstantsJs2["default"].MODE_DATE, _ConstantsJs2["default"].MODE_DATETIME, _ConstantsJs2["default"].MODE_TIME]), + mode: _react.PropTypes.oneOf([_ConstantsJs2["default"].MODE_DATE, _ConstantsJs2["default"].MODE_MONTH, _ConstantsJs2["default"].MODE_DATETIME, _ConstantsJs2["default"].MODE_TIME]), minDate: _react.PropTypes.object, maxDate: _react.PropTypes.object, direction: _react.PropTypes.string, @@ -1146,11 +1165,11 @@ return /******/ (function(modules) { // webpackBootstrap var _DateTimePickerDateJs2 = _interopRequireDefault(_DateTimePickerDateJs); - var _DateTimePickerTimeJs = __webpack_require__(49); + var _DateTimePickerTimeJs = __webpack_require__(50); var _DateTimePickerTimeJs2 = _interopRequireDefault(_DateTimePickerTimeJs); - var _ConstantsJs = __webpack_require__(51); + var _ConstantsJs = __webpack_require__(48); var _ConstantsJs2 = _interopRequireDefault(_ConstantsJs); @@ -1177,6 +1196,7 @@ return /******/ (function(modules) { // webpackBootstrap maxDate: _this.props.maxDate, minDate: _this.props.minDate, selectedDate: _this.props.selectedDate, + setSelectedMonth: _this.props.setSelectedMonth, setSelectedDate: _this.props.setSelectedDate, setViewMonth: _this.props.setViewMonth, setViewYear: _this.props.setViewYear, @@ -1185,7 +1205,8 @@ return /******/ (function(modules) { // webpackBootstrap subtractMonth: _this.props.subtractMonth, subtractYear: _this.props.subtractYear, viewDate: _this.props.viewDate, - viewMode: _this.props.viewMode + viewMode: _this.props.viewMode, + mode: _this.props.mode }) ); } @@ -1251,8 +1272,9 @@ return /******/ (function(modules) { // webpackBootstrap selectedDate: _react.PropTypes.object.isRequired, showToday: _react.PropTypes.bool, viewMode: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]), - mode: _react.PropTypes.oneOf([_ConstantsJs2["default"].MODE_DATE, _ConstantsJs2["default"].MODE_DATETIME, _ConstantsJs2["default"].MODE_TIME]), + mode: _react.PropTypes.oneOf([_ConstantsJs2["default"].MODE_DATE, _ConstantsJs2["default"].MODE_MONTH, _ConstantsJs2["default"].MODE_DATETIME, _ConstantsJs2["default"].MODE_TIME]), daysOfWeekDisabled: _react.PropTypes.array, + setSelectedMonth: _react.PropTypes.func.isRequired, setSelectedDate: _react.PropTypes.func.isRequired, subtractYear: _react.PropTypes.func.isRequired, addYear: _react.PropTypes.func.isRequired, @@ -1316,10 +1338,14 @@ return /******/ (function(modules) { // webpackBootstrap var _DateTimePickerMonths2 = _interopRequireDefault(_DateTimePickerMonths); - var _DateTimePickerYears = __webpack_require__(48); + var _DateTimePickerYears = __webpack_require__(49); var _DateTimePickerYears2 = _interopRequireDefault(_DateTimePickerYears); + var _ConstantsJs = __webpack_require__(48); + + var _ConstantsJs2 = _interopRequireDefault(_ConstantsJs); + var DateTimePickerDate = (function (_Component) { _inherits(DateTimePickerDate, _Component); @@ -1332,7 +1358,9 @@ return /******/ (function(modules) { // webpackBootstrap selectedDate: _react.PropTypes.object.isRequired, showToday: _react.PropTypes.bool, viewMode: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]), + mode: _react.PropTypes.oneOf([_ConstantsJs2["default"].MODE_DATE, _ConstantsJs2["default"].MODE_MONTH, _ConstantsJs2["default"].MODE_DATETIME]), daysOfWeekDisabled: _react.PropTypes.array, + setSelectedMonth: _react.PropTypes.func.isRequired, setSelectedDate: _react.PropTypes.func.isRequired, subtractYear: _react.PropTypes.func.isRequired, addYear: _react.PropTypes.func.isRequired, @@ -1407,10 +1435,12 @@ return /******/ (function(modules) { // webpackBootstrap return _react2["default"].createElement(_DateTimePickerMonths2["default"], { addYear: _this.props.addYear, selectedDate: _this.props.selectedDate, + setSelectedMonth: _this.props.setSelectedMonth, setViewMonth: _this.setViewMonth, showYears: _this.showYears, subtractYear: _this.props.subtractYear, - viewDate: _this.props.viewDate + viewDate: _this.props.viewDate, + mode: _this.props.mode }); } else { return null; @@ -1449,6 +1479,9 @@ return /******/ (function(modules) { // webpackBootstrap } }; this.state = viewModes[this.props.viewMode] || viewModes[_Object$keys(viewModes)[this.props.viewMode]] || viewModes.days; + if (this.state.daysDisplayed && this.props.mode === _ConstantsJs2["default"].MODE_MONTH) { + this.state = viewModes.months; + } } _createClass(DateTimePickerDate, [{ @@ -1737,6 +1770,10 @@ return /******/ (function(modules) { // webpackBootstrap var _moment2 = _interopRequireDefault(_moment); + var _ConstantsJs = __webpack_require__(48); + + var _ConstantsJs2 = _interopRequireDefault(_ConstantsJs); + var DateTimePickerMonths = (function (_Component) { _inherits(DateTimePickerMonths, _Component); @@ -1749,6 +1786,7 @@ return /******/ (function(modules) { // webpackBootstrap this.renderMonths = function () { var classes, i, month, months, monthsShort; + var onClick = _this.props.mode === _ConstantsJs2["default"].MODE_MONTH ? _this.props.setSelectedMonth : _this.props.setViewMonth; month = _this.props.selectedDate.month(); monthsShort = _moment2["default"].monthsShort(); i = 0; @@ -1760,7 +1798,7 @@ return /******/ (function(modules) { // webpackBootstrap }; months.push(_react2["default"].createElement( "span", - { className: (0, _classnames2["default"])(classes), key: i, onClick: _this.props.setViewMonth }, + { className: (0, _classnames2["default"])(classes), key: i, onClick: onClick }, monthsShort[i] )); i++; @@ -1825,7 +1863,9 @@ return /******/ (function(modules) { // webpackBootstrap viewDate: _react.PropTypes.object.isRequired, selectedDate: _react.PropTypes.object.isRequired, showYears: _react.PropTypes.func.isRequired, - setViewMonth: _react.PropTypes.func.isRequired + setViewMonth: _react.PropTypes.func.isRequired, + setSelectedMonth: _react.PropTypes.func.isRequired, + mode: _react.PropTypes.oneOf([_ConstantsJs2["default"].MODE_DATE, _ConstantsJs2["default"].MODE_MONTH, _ConstantsJs2["default"].MODE_DATETIME]) }, enumerable: true }]); @@ -1838,6 +1878,23 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 48 */ +/***/ function(module, exports) { + + "use strict"; + + module.exports = { + MODE_DATE: "date", + MODE_MONTH: "month", + MODE_DATETIME: "datetime", + MODE_TIME: "time", + + SIZE_SMALL: "sm", + SIZE_MEDIUM: "md", + SIZE_LARGE: "lg" + }; + +/***/ }, +/* 49 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -1969,7 +2026,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports["default"]; /***/ }, -/* 49 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -1994,7 +2051,7 @@ return /******/ (function(modules) { // webpackBootstrap var _react2 = _interopRequireDefault(_react); - var _DateTimePickerMinutes = __webpack_require__(50); + var _DateTimePickerMinutes = __webpack_require__(51); var _DateTimePickerMinutes2 = _interopRequireDefault(_DateTimePickerMinutes); @@ -2002,7 +2059,7 @@ return /******/ (function(modules) { // webpackBootstrap var _DateTimePickerHours2 = _interopRequireDefault(_DateTimePickerHours); - var _ConstantsJs = __webpack_require__(51); + var _ConstantsJs = __webpack_require__(48); var _ConstantsJs2 = _interopRequireDefault(_ConstantsJs); @@ -2198,7 +2255,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = exports["default"]; /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2221,7 +2278,7 @@ return /******/ (function(modules) { // webpackBootstrap var _react2 = _interopRequireDefault(_react); - var _ConstantsJs = __webpack_require__(51); + var _ConstantsJs = __webpack_require__(48); var _ConstantsJs2 = _interopRequireDefault(_ConstantsJs); @@ -2357,22 +2414,6 @@ return /******/ (function(modules) { // webpackBootstrap exports["default"] = DateTimePickerMinutes; module.exports = exports["default"]; -/***/ }, -/* 51 */ -/***/ function(module, exports) { - - "use strict"; - - module.exports = { - MODE_DATE: "date", - MODE_DATETIME: "datetime", - MODE_TIME: "time", - - SIZE_SMALL: "sm", - SIZE_MEDIUM: "md", - SIZE_LARGE: "lg" - }; - /***/ }, /* 52 */ /***/ function(module, exports, __webpack_require__) { @@ -2397,7 +2438,7 @@ return /******/ (function(modules) { // webpackBootstrap var _react2 = _interopRequireDefault(_react); - var _ConstantsJs = __webpack_require__(51); + var _ConstantsJs = __webpack_require__(48); var _ConstantsJs2 = _interopRequireDefault(_ConstantsJs); diff --git a/dist/react-bootstrap-datetimepicker.min.js b/dist/react-bootstrap-datetimepicker.min.js index 18fe9e9f..33e33f16 100644 --- a/dist/react-bootstrap-datetimepicker.min.js +++ b/dist/react-bootstrap-datetimepicker.min.js @@ -1,6 +1,6 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("React"),require("moment")):"function"==typeof define&&define.amd?define(["React","moment"],t):"object"==typeof exports?exports.ReactBootstrapDatetimepicker=t(require("React"),require("moment")):e.ReactBootstrapDatetimepicker=t(e.React,e.moment)}(this,function(e,t){return function(e){function t(s){if(a[s])return a[s].exports;var r=a[s]={exports:{},id:s,loaded:!1};return e[s].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var a={};return t.m=e,t.c=a,t.p="",t(0)}([function(e,t,a){e.exports=a(1)},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(31)["default"],u=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var l=a(38),c=u(l),d=a(39),p=u(d),f=a(40),m=u(f),h=a(41),y=u(h),D=a(51),v=u(D),E=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.resolvePropsInputFormat=function(){if(e.props.inputFormat)return e.props.inputFormat;switch(e.props.mode){case v["default"].MODE_TIME:return"h:mm A";case v["default"].MODE_DATE:return"MM/DD/YY";default:return"MM/DD/YY h:mm A"}},this.state={showDatePicker:this.props.mode!==v["default"].MODE_TIME,showTimePicker:this.props.mode===v["default"].MODE_TIME,inputFormat:this.resolvePropsInputFormat(),buttonIcon:this.props.mode===v["default"].MODE_TIME?"glyphicon-time":"glyphicon-calendar",widgetStyle:{display:"block",position:"absolute",left:-9999,zIndex:"9999 !important"},viewDate:(0,p["default"])(this.props.dateTime,this.props.format,!0).startOf("month"),selectedDate:(0,p["default"])(this.props.dateTime,this.props.format,!0),inputValue:"undefined"!=typeof this.props.defaultText?this.props.defaultText:(0,p["default"])(this.props.dateTime,this.props.format,!0).format(this.resolvePropsInputFormat())},this.componentWillReceiveProps=function(t){var a={};return t.inputFormat!==e.props.inputFormat&&(a.inputFormat=t.inputFormat,a.inputValue=(0,p["default"])(t.dateTime,t.format,!0).format(t.inputFormat)),t.dateTime!==e.props.dateTime&&(0,p["default"])(t.dateTime,t.format,!0).isValid()&&(a.viewDate=(0,p["default"])(t.dateTime,t.format,!0).startOf("month"),a.selectedDate=(0,p["default"])(t.dateTime,t.format,!0),a.inputValue=(0,p["default"])(t.dateTime,t.format,!0).format(t.inputFormat?t.inputFormat:e.state.inputFormat)),e.setState(a)},this.onChange=function(t){var a=null==t.target?t:t.target.value;return(0,p["default"])(a,e.state.inputFormat,!0).isValid()&&e.setState({selectedDate:(0,p["default"])(a,e.state.inputFormat,!0),viewDate:(0,p["default"])(a,e.state.inputFormat,!0).startOf("month")}),e.setState({inputValue:a},function(){return this.props.onChange((0,p["default"])(this.state.inputValue,this.state.inputFormat,!0).format(this.props.format),a)})},this.getValue=function(){return(0,p["default"])(e.state.inputValue,e.props.inputFormat,!0).format(e.props.format)},this.setSelectedDate=function(t){var a=t.target;if(a.className&&!a.className.match(/disabled/g)){var s=void 0;return s=a.className.indexOf("new")>=0?e.state.viewDate.month()+1:a.className.indexOf("old")>=0?e.state.viewDate.month()-1:e.state.viewDate.month(),e.setState({selectedDate:e.state.viewDate.clone().month(s).date(parseInt(t.target.innerHTML)).hour(e.state.selectedDate.hours()).minute(e.state.selectedDate.minutes())},function(){return this.closePicker(),this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.state.inputFormat)})})}},this.setSelectedHour=function(t){return e.setState({selectedDate:e.state.selectedDate.clone().hour(parseInt(t.target.innerHTML)).minute(e.state.selectedDate.minutes())},function(){return this.closePicker(),this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.state.inputFormat)})})},this.setSelectedMinute=function(t){return e.setState({selectedDate:e.state.selectedDate.clone().hour(e.state.selectedDate.hours()).minute(parseInt(t.target.innerHTML))},function(){return this.closePicker(),this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.state.inputFormat)})})},this.setViewMonth=function(t){return e.setState({viewDate:e.state.viewDate.clone().month(t)})},this.setViewYear=function(t){return e.setState({viewDate:e.state.viewDate.clone().year(t)})},this.addMinute=function(){return e.setState({selectedDate:e.state.selectedDate.clone().add(1,"minutes")},function(){return this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.resolvePropsInputFormat())})})},this.addHour=function(){return e.setState({selectedDate:e.state.selectedDate.clone().add(1,"hours")},function(){return this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.resolvePropsInputFormat())})})},this.addMonth=function(){return e.setState({viewDate:e.state.viewDate.add(1,"months")})},this.addYear=function(){return e.setState({viewDate:e.state.viewDate.add(1,"years")})},this.addDecade=function(){return e.setState({viewDate:e.state.viewDate.add(10,"years")})},this.subtractMinute=function(){return e.setState({selectedDate:e.state.selectedDate.clone().subtract(1,"minutes")},function(){return e.props.onChange(e.state.selectedDate.format(e.props.format)),e.setState({inputValue:e.state.selectedDate.format(e.resolvePropsInputFormat())})})},this.subtractHour=function(){return e.setState({selectedDate:e.state.selectedDate.clone().subtract(1,"hours")},function(){return e.props.onChange(e.state.selectedDate.format(e.props.format)),e.setState({inputValue:e.state.selectedDate.format(e.resolvePropsInputFormat())})})},this.subtractMonth=function(){return e.setState({viewDate:e.state.viewDate.subtract(1,"months")})},this.subtractYear=function(){return e.setState({viewDate:e.state.viewDate.subtract(1,"years")})},this.subtractDecade=function(){return e.setState({viewDate:e.state.viewDate.subtract(10,"years")})},this.togglePeriod=function(){return e.state.selectedDate.hour()>12?e.onChange(e.state.selectedDate.clone().subtract(12,"hours").format(e.state.inputFormat)):e.onChange(e.state.selectedDate.clone().add(12,"hours").format(e.state.inputFormat))},this.togglePicker=function(){return e.setState({showDatePicker:!e.state.showDatePicker,showTimePicker:!e.state.showTimePicker})},this.onClick=function(){var t=void 0,a=void 0,s=void 0,r=void 0,o=void 0,n=void 0;return e.state.showPicker?e.closePicker():(e.setState({showPicker:!0}),a=e.refs.dtpbutton.getBoundingClientRect(),t={"bootstrap-datetimepicker-widget":!0,"dropdown-menu":!0},s={top:a.top+window.pageYOffset-document.documentElement.clientTop,left:a.left+window.pageXOffset-document.documentElement.clientLeft},s.top=s.top+e.refs.datetimepicker.offsetHeight,o=void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop,r="up"===e.props.direction?"top":"bottom"===e.props.direction?"bottom":"auto"===e.props.direction?s.top+e.refs.widget.offsetHeight>window.offsetHeight+o&&e.refs.widget.offsetHeight+e.refs.datetimepicker.offsetHeight>s.top?"top":"bottom":void 0,"top"===r?(s.top=-e.refs.widget.offsetHeight-e.clientHeight-2,t.top=!0,t.bottom=!1,t["pull-right"]=!0):(s.top=40,t.top=!1,t.bottom=!0,t["pull-right"]=!0),n={display:"block",position:"absolute",top:s.top,left:"auto",right:40},e.setState({widgetStyle:n,widgetClasses:t}))},this.closePicker=function(){var t=i({},e.state.widgetStyle);return t.left=-9999,t.display="none",e.setState({showPicker:!1,widgetStyle:t})},this.size=function(){switch(e.props.size){case v["default"].SIZE_SMALL:return"form-group-sm";case v["default"].SIZE_LARGE:return"form-group-lg"}return""},this.renderOverlay=function(){var t={position:"fixed",top:0,bottom:0,left:0,right:0,zIndex:"999"};return e.state.showPicker?c["default"].createElement("div",{onClick:e.closePicker,style:t}):c["default"].createElement("span",null)}}return r(t,e),o(t,[{key:"render",value:function(){return c["default"].createElement("div",null,this.renderOverlay(),c["default"].createElement(y["default"],{addDecade:this.addDecade,addHour:this.addHour,addMinute:this.addMinute,addMonth:this.addMonth,addYear:this.addYear,daysOfWeekDisabled:this.props.daysOfWeekDisabled,maxDate:this.props.maxDate,minDate:this.props.minDate,mode:this.props.mode,ref:"widget",selectedDate:this.state.selectedDate,setSelectedDate:this.setSelectedDate,setSelectedHour:this.setSelectedHour,setSelectedMinute:this.setSelectedMinute,setViewMonth:this.setViewMonth,setViewYear:this.setViewYear,showDatePicker:this.state.showDatePicker,showTimePicker:this.state.showTimePicker,showToday:this.props.showToday,subtractDecade:this.subtractDecade,subtractHour:this.subtractHour,subtractMinute:this.subtractMinute,subtractMonth:this.subtractMonth,subtractYear:this.subtractYear,togglePeriod:this.togglePeriod,togglePicker:this.togglePicker,viewDate:this.state.viewDate,viewMode:this.props.viewMode,widgetClasses:this.state.widgetClasses,widgetStyle:this.state.widgetStyle}),c["default"].createElement("div",{className:"input-group date "+this.size(),ref:"datetimepicker"},c["default"].createElement("input",i({className:"form-control",onChange:this.onChange,type:"text",value:this.state.inputValue},this.props.inputProps)),c["default"].createElement("span",{className:"input-group-addon",onBlur:this.onBlur,onClick:this.onClick,ref:"dtpbutton"},c["default"].createElement("span",{className:(0,m["default"])("glyphicon",this.state.buttonIcon)}))))}}],[{key:"defaultProps",value:{dateTime:(0,p["default"])().format("x"),format:"x",showToday:!0,viewMode:"days",daysOfWeekDisabled:[],size:v["default"].SIZE_MEDIUM,mode:v["default"].MODE_DATETIME,onChange:function(e){console.log(e)}},enumerable:!0},{key:"propTypes",value:{dateTime:l.PropTypes.oneOfType([l.PropTypes.string,l.PropTypes.number]),onChange:l.PropTypes.func,format:l.PropTypes.string,inputProps:l.PropTypes.object,inputFormat:l.PropTypes.string,defaultText:l.PropTypes.string,mode:l.PropTypes.oneOf([v["default"].MODE_DATE,v["default"].MODE_DATETIME,v["default"].MODE_TIME]),minDate:l.PropTypes.object,maxDate:l.PropTypes.object,direction:l.PropTypes.string,showToday:l.PropTypes.bool,viewMode:l.PropTypes.string,size:l.PropTypes.oneOf([v["default"].SIZE_SMALL,v["default"].SIZE_MEDIUM,v["default"].SIZE_LARGE]),daysOfWeekDisabled:l.PropTypes.arrayOf(l.PropTypes.number)},enumerable:!0}]),t}(l.Component);t["default"]=E,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(3)["default"];t["default"]=function(e,t,a){for(var r=!0;r;){var o=e,n=t,i=a;r=!1,null===o&&(o=Function.prototype);var u=s(o,n);if(void 0!==u){if("value"in u)return u.value;var l=u.get;return void 0===l?void 0:l.call(i)}var c=Object.getPrototypeOf(o);if(null===c)return void 0;e=c,t=n,a=i,r=!0,u=c=void 0}},t.__esModule=!0},function(e,t,a){e.exports={"default":a(4),__esModule:!0}},function(e,t,a){var s=a(5);a(6),e.exports=function(e,t){return s.getDesc(e,t)}},function(e,t){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},function(e,t,a){var s=a(7);a(11)("getOwnPropertyDescriptor",function(e){return function(t,a){return e(s(t),a)}})},function(e,t,a){var s=a(8),r=a(10);e.exports=function(e){return s(r(e))}},function(e,t,a){var s=a(9);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==s(e)?e.split(""):Object(e)}},function(e,t){var a={}.toString;e.exports=function(e){return a.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,a){var s=a(12),r=a(14),o=a(17);e.exports=function(e,t){var a=(r.Object||{})[e]||Object[e],n={};n[e]=t(a),s(s.S+s.F*o(function(){a(1)}),"Object",n)}},function(e,t,a){var s=a(13),r=a(14),o=a(15),n="prototype",i=function(e,t,a){var u,l,c,d=e&i.F,p=e&i.G,f=e&i.S,m=e&i.P,h=e&i.B,y=e&i.W,D=p?r:r[t]||(r[t]={}),v=p?s:f?s[t]:(s[t]||{})[n];p&&(a=t);for(u in a)l=!d&&v&&u in v,l&&u in D||(c=l?v[u]:a[u],D[u]=p&&"function"!=typeof v[u]?a[u]:h&&l?o(c,s):y&&v[u]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[n]=e[n],t}(c):m&&"function"==typeof c?o(Function.call,c):c,m&&((D[n]||(D[n]={}))[u]=c))};i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,e.exports=i},function(e,t){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},function(e,t){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},function(e,t,a){var s=a(16);e.exports=function(e,t,a){if(s(e),void 0===t)return e;switch(a){case 1:return function(a){return e.call(t,a)};case 2:return function(a,s){return e.call(t,a,s)};case 3:return function(a,s,r){return e.call(t,a,s,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,a){"use strict";var s=a(19)["default"],r=a(21)["default"];t["default"]=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=s(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r?r(e,t):e.__proto__=t)},t.__esModule=!0},function(e,t,a){e.exports={"default":a(20),__esModule:!0}},function(e,t,a){var s=a(5);e.exports=function(e,t){return s.create(e,t)}},function(e,t,a){e.exports={"default":a(22),__esModule:!0}},function(e,t,a){a(23),e.exports=a(14).Object.setPrototypeOf},function(e,t,a){var s=a(12);s(s.S,"Object",{setPrototypeOf:a(24).set})},function(e,t,a){var s=a(5).getDesc,r=a(25),o=a(26),n=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{r=a(15)(Function.call,s(Object.prototype,"__proto__").set,2),r(e,[]),t=!(e instanceof Array)}catch(o){t=!0}return function(e,a){return n(e,a),t?e.__proto__=a:r(e,a),e}}({},!1):void 0),check:n}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,a){var s=a(25);e.exports=function(e){if(!s(e))throw TypeError(e+" is not an object!");return e}},function(e,t,a){"use strict";var s=a(28)["default"];t["default"]=function(){function e(e,t){for(var a=0;au;)for(var p,f=o(n[u++]),m=c?l(f).concat(c(f)):l(f),h=m.length,y=0;h>y;)d.call(f,p=m[y++])&&(a[p]=f[p]);return a}:Object.assign},function(e,t,a){var s=a(10);e.exports=function(e){return Object(s(e))}},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(t,a){t.exports=e},function(e,a){e.exports=t},function(e,t,a){var s;/*! +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("React"),require("moment")):"function"==typeof define&&define.amd?define(["React","moment"],t):"object"==typeof exports?exports.ReactBootstrapDatetimepicker=t(require("React"),require("moment")):e.ReactBootstrapDatetimepicker=t(e.React,e.moment)}(this,function(e,t){return function(e){function t(s){if(a[s])return a[s].exports;var r=a[s]={exports:{},id:s,loaded:!1};return e[s].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var a={};return t.m=e,t.c=a,t.p="",t(0)}([function(e,t,a){e.exports=a(1)},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(31)["default"],l=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var u=a(38),c=l(u),d=a(39),p=l(d),f=a(40),m=l(f),h=a(41),y=l(h),D=a(48),E=l(D),v=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.resolvePropsInputFormat=function(){if(e.props.inputFormat)return e.props.inputFormat;switch(e.props.mode){case E["default"].MODE_TIME:return"h:mm A";case E["default"].MODE_DATE:return"MM/DD/YY";case E["default"].MODE_MONTH:return"MM/YY";default:return"MM/DD/YY h:mm A"}},this.state={showDatePicker:this.props.mode!==E["default"].MODE_TIME,showTimePicker:this.props.mode===E["default"].MODE_TIME,inputFormat:this.resolvePropsInputFormat(),buttonIcon:this.props.mode===E["default"].MODE_TIME?"glyphicon-time":"glyphicon-calendar",widgetStyle:{display:"block",position:"absolute",left:-9999,zIndex:"9999 !important"},viewDate:(0,p["default"])(this.props.dateTime,this.props.format,!0).startOf("month"),selectedDate:(0,p["default"])(this.props.dateTime,this.props.format,!0),inputValue:"undefined"!=typeof this.props.defaultText?this.props.defaultText:(0,p["default"])(this.props.dateTime,this.props.format,!0).format(this.resolvePropsInputFormat())},this.componentWillReceiveProps=function(t){var a={};return t.inputFormat!==e.props.inputFormat&&(a.inputFormat=t.inputFormat,a.inputValue=(0,p["default"])(t.dateTime,t.format,!0).format(t.inputFormat)),t.dateTime!==e.props.dateTime&&(0,p["default"])(t.dateTime,t.format,!0).isValid()&&(a.viewDate=(0,p["default"])(t.dateTime,t.format,!0).startOf("month"),a.selectedDate=(0,p["default"])(t.dateTime,t.format,!0),a.inputValue=(0,p["default"])(t.dateTime,t.format,!0).format(t.inputFormat?t.inputFormat:e.state.inputFormat)),e.setState(a)},this.onChange=function(t){var a=null==t.target?t:t.target.value;return(0,p["default"])(a,e.state.inputFormat,!0).isValid()&&e.setState({selectedDate:(0,p["default"])(a,e.state.inputFormat,!0),viewDate:(0,p["default"])(a,e.state.inputFormat,!0).startOf("month")}),e.setState({inputValue:a},function(){return this.props.onChange((0,p["default"])(this.state.inputValue,this.state.inputFormat,!0).format(this.props.format),a)})},this.getValue=function(){return(0,p["default"])(e.state.inputValue,e.props.inputFormat,!0).format(e.props.format)},this.setSelectedMonth=function(t){var a=t.target;return a.className&&!a.className.match(/disabled/g)?e.setState({selectedDate:e.state.viewDate.clone().month(t.target.innerHTML).date(e.state.selectedDate.date()).hour(e.state.selectedDate.hours()).minute(e.state.selectedDate.minutes())},function(){return this.closePicker(),this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.state.inputFormat)})}):void 0},this.setSelectedDate=function(t){var a=t.target;if(a.className&&!a.className.match(/disabled/g)){var s=void 0;return s=a.className.indexOf("new")>=0?e.state.viewDate.month()+1:a.className.indexOf("old")>=0?e.state.viewDate.month()-1:e.state.viewDate.month(),e.setState({selectedDate:e.state.viewDate.clone().month(s).date(parseInt(t.target.innerHTML)).hour(e.state.selectedDate.hours()).minute(e.state.selectedDate.minutes())},function(){return this.closePicker(),this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.state.inputFormat)})})}},this.setSelectedHour=function(t){return e.setState({selectedDate:e.state.selectedDate.clone().hour(parseInt(t.target.innerHTML)).minute(e.state.selectedDate.minutes())},function(){return this.closePicker(),this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.state.inputFormat)})})},this.setSelectedMinute=function(t){return e.setState({selectedDate:e.state.selectedDate.clone().hour(e.state.selectedDate.hours()).minute(parseInt(t.target.innerHTML))},function(){return this.closePicker(),this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.state.inputFormat)})})},this.setViewMonth=function(t){return e.setState({viewDate:e.state.viewDate.clone().month(t)})},this.setViewYear=function(t){return e.setState({viewDate:e.state.viewDate.clone().year(t)})},this.addMinute=function(){return e.setState({selectedDate:e.state.selectedDate.clone().add(1,"minutes")},function(){return this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.resolvePropsInputFormat())})})},this.addHour=function(){return e.setState({selectedDate:e.state.selectedDate.clone().add(1,"hours")},function(){return this.props.onChange(this.state.selectedDate.format(this.props.format)),this.setState({inputValue:this.state.selectedDate.format(this.resolvePropsInputFormat())})})},this.addMonth=function(){return e.setState({viewDate:e.state.viewDate.add(1,"months")})},this.addYear=function(){return e.setState({viewDate:e.state.viewDate.add(1,"years")})},this.addDecade=function(){return e.setState({viewDate:e.state.viewDate.add(10,"years")})},this.subtractMinute=function(){return e.setState({selectedDate:e.state.selectedDate.clone().subtract(1,"minutes")},function(){return e.props.onChange(e.state.selectedDate.format(e.props.format)),e.setState({inputValue:e.state.selectedDate.format(e.resolvePropsInputFormat())})})},this.subtractHour=function(){return e.setState({selectedDate:e.state.selectedDate.clone().subtract(1,"hours")},function(){return e.props.onChange(e.state.selectedDate.format(e.props.format)),e.setState({inputValue:e.state.selectedDate.format(e.resolvePropsInputFormat())})})},this.subtractMonth=function(){return e.setState({viewDate:e.state.viewDate.subtract(1,"months")})},this.subtractYear=function(){return e.setState({viewDate:e.state.viewDate.subtract(1,"years")})},this.subtractDecade=function(){return e.setState({viewDate:e.state.viewDate.subtract(10,"years")})},this.togglePeriod=function(){return e.state.selectedDate.hour()>12?e.onChange(e.state.selectedDate.clone().subtract(12,"hours").format(e.state.inputFormat)):e.onChange(e.state.selectedDate.clone().add(12,"hours").format(e.state.inputFormat))},this.togglePicker=function(){return e.setState({showDatePicker:!e.state.showDatePicker,showTimePicker:!e.state.showTimePicker})},this.onClick=function(){var t=void 0,a=void 0,s=void 0,r=void 0,o=void 0,n=void 0;return e.state.showPicker?e.closePicker():(e.setState({showPicker:!0}),a=e.refs.dtpbutton.getBoundingClientRect(),t={"bootstrap-datetimepicker-widget":!0,"dropdown-menu":!0},s={top:a.top+window.pageYOffset-document.documentElement.clientTop,left:a.left+window.pageXOffset-document.documentElement.clientLeft},s.top=s.top+e.refs.datetimepicker.offsetHeight,o=void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop,r="up"===e.props.direction?"top":"bottom"===e.props.direction?"bottom":"auto"===e.props.direction?s.top+e.refs.widget.offsetHeight>window.offsetHeight+o&&e.refs.widget.offsetHeight+e.refs.datetimepicker.offsetHeight>s.top?"top":"bottom":void 0,"top"===r?(s.top=-e.refs.widget.offsetHeight-e.clientHeight-2,t.top=!0,t.bottom=!1,t["pull-right"]=!0):(s.top=40,t.top=!1,t.bottom=!0,t["pull-right"]=!0),n={display:"block",position:"absolute",top:s.top,left:"auto",right:40},e.setState({widgetStyle:n,widgetClasses:t}))},this.closePicker=function(){var t=i({},e.state.widgetStyle);return t.left=-9999,t.display="none",e.setState({showPicker:!1,widgetStyle:t})},this.size=function(){switch(e.props.size){case E["default"].SIZE_SMALL:return"form-group-sm";case E["default"].SIZE_LARGE:return"form-group-lg"}return""},this.renderOverlay=function(){var t={position:"fixed",top:0,bottom:0,left:0,right:0,zIndex:"999"};return e.state.showPicker?c["default"].createElement("div",{onClick:e.closePicker,style:t}):c["default"].createElement("span",null)}}return r(t,e),o(t,[{key:"render",value:function(){return c["default"].createElement("div",null,this.renderOverlay(),c["default"].createElement(y["default"],{addDecade:this.addDecade,addHour:this.addHour,addMinute:this.addMinute,addMonth:this.addMonth,addYear:this.addYear,daysOfWeekDisabled:this.props.daysOfWeekDisabled,maxDate:this.props.maxDate,minDate:this.props.minDate,mode:this.props.mode,ref:"widget",selectedDate:this.state.selectedDate,setSelectedMonth:this.setSelectedMonth,setSelectedDate:this.setSelectedDate,setSelectedHour:this.setSelectedHour,setSelectedMinute:this.setSelectedMinute,setViewMonth:this.setViewMonth,setViewYear:this.setViewYear,showDatePicker:this.state.showDatePicker,showTimePicker:this.state.showTimePicker,showToday:this.props.showToday,subtractDecade:this.subtractDecade,subtractHour:this.subtractHour,subtractMinute:this.subtractMinute,subtractMonth:this.subtractMonth,subtractYear:this.subtractYear,togglePeriod:this.togglePeriod,togglePicker:this.togglePicker,viewDate:this.state.viewDate,viewMode:this.props.viewMode,widgetClasses:this.state.widgetClasses,widgetStyle:this.state.widgetStyle}),c["default"].createElement("div",{className:"input-group date "+this.size(),ref:"datetimepicker"},c["default"].createElement("input",i({className:"form-control",onChange:this.onChange,type:"text",value:this.state.inputValue},this.props.inputProps)),c["default"].createElement("span",{className:"input-group-addon",onBlur:this.onBlur,onClick:this.onClick,ref:"dtpbutton"},c["default"].createElement("span",{className:(0,m["default"])("glyphicon",this.state.buttonIcon)}))))}}],[{key:"defaultProps",value:{dateTime:(0,p["default"])().format("x"),format:"x",showToday:!0,viewMode:"days",daysOfWeekDisabled:[],size:E["default"].SIZE_MEDIUM,mode:E["default"].MODE_DATETIME,onChange:function(e){console.log(e)}},enumerable:!0},{key:"propTypes",value:{dateTime:u.PropTypes.oneOfType([u.PropTypes.string,u.PropTypes.number]),onChange:u.PropTypes.func,format:u.PropTypes.string,inputProps:u.PropTypes.object,inputFormat:u.PropTypes.string,defaultText:u.PropTypes.string,mode:u.PropTypes.oneOf([E["default"].MODE_DATE,E["default"].MODE_MONTH,E["default"].MODE_DATETIME,E["default"].MODE_TIME]),minDate:u.PropTypes.object,maxDate:u.PropTypes.object,direction:u.PropTypes.string,showToday:u.PropTypes.bool,viewMode:u.PropTypes.string,size:u.PropTypes.oneOf([E["default"].SIZE_SMALL,E["default"].SIZE_MEDIUM,E["default"].SIZE_LARGE]),daysOfWeekDisabled:u.PropTypes.arrayOf(u.PropTypes.number)},enumerable:!0}]),t}(u.Component);t["default"]=v,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(3)["default"];t["default"]=function(e,t,a){for(var r=!0;r;){var o=e,n=t,i=a;r=!1,null===o&&(o=Function.prototype);var l=s(o,n);if(void 0!==l){if("value"in l)return l.value;var u=l.get;if(void 0===u)return;return u.call(i)}var c=Object.getPrototypeOf(o);if(null===c)return;e=c,t=n,a=i,r=!0,l=c=void 0}},t.__esModule=!0},function(e,t,a){e.exports={"default":a(4),__esModule:!0}},function(e,t,a){var s=a(5);a(6),e.exports=function(e,t){return s.getDesc(e,t)}},function(e,t){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},function(e,t,a){var s=a(7);a(11)("getOwnPropertyDescriptor",function(e){return function(t,a){return e(s(t),a)}})},function(e,t,a){var s=a(8),r=a(10);e.exports=function(e){return s(r(e))}},function(e,t,a){var s=a(9);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==s(e)?e.split(""):Object(e)}},function(e,t){var a={}.toString;e.exports=function(e){return a.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,a){var s=a(12),r=a(14),o=a(17);e.exports=function(e,t){var a=(r.Object||{})[e]||Object[e],n={};n[e]=t(a),s(s.S+s.F*o(function(){a(1)}),"Object",n)}},function(e,t,a){var s=a(13),r=a(14),o=a(15),n="prototype",i=function(e,t,a){var l,u,c,d=e&i.F,p=e&i.G,f=e&i.S,m=e&i.P,h=e&i.B,y=e&i.W,D=p?r:r[t]||(r[t]={}),E=p?s:f?s[t]:(s[t]||{})[n];p&&(a=t);for(l in a)u=!d&&E&&l in E,u&&l in D||(c=u?E[l]:a[l],D[l]=p&&"function"!=typeof E[l]?a[l]:h&&u?o(c,s):y&&E[l]==c?function(e){var t=function(t){return this instanceof e?new e(t):e(t)};return t[n]=e[n],t}(c):m&&"function"==typeof c?o(Function.call,c):c,m&&((D[n]||(D[n]={}))[l]=c))};i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,e.exports=i},function(e,t){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},function(e,t){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},function(e,t,a){var s=a(16);e.exports=function(e,t,a){if(s(e),void 0===t)return e;switch(a){case 1:return function(a){return e.call(t,a)};case 2:return function(a,s){return e.call(t,a,s)};case 3:return function(a,s,r){return e.call(t,a,s,r)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,a){"use strict";var s=a(19)["default"],r=a(21)["default"];t["default"]=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=s(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r?r(e,t):e.__proto__=t)},t.__esModule=!0},function(e,t,a){e.exports={"default":a(20),__esModule:!0}},function(e,t,a){var s=a(5);e.exports=function(e,t){return s.create(e,t)}},function(e,t,a){e.exports={"default":a(22),__esModule:!0}},function(e,t,a){a(23),e.exports=a(14).Object.setPrototypeOf},function(e,t,a){var s=a(12);s(s.S,"Object",{setPrototypeOf:a(24).set})},function(e,t,a){var s=a(5).getDesc,r=a(25),o=a(26),n=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{r=a(15)(Function.call,s(Object.prototype,"__proto__").set,2),r(e,[]),t=!(e instanceof Array)}catch(o){t=!0}return function(e,a){return n(e,a),t?e.__proto__=a:r(e,a),e}}({},!1):void 0),check:n}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,a){var s=a(25);e.exports=function(e){if(!s(e))throw TypeError(e+" is not an object!");return e}},function(e,t,a){"use strict";var s=a(28)["default"];t["default"]=function(){function e(e,t){for(var a=0;al;)for(var p,f=o(n[l++]),m=c?u(f).concat(c(f)):u(f),h=m.length,y=0;h>y;)d.call(f,p=m[y++])&&(a[p]=f[p]);return a}:Object.assign},function(e,t,a){var s=a(10);e.exports=function(e){return Object(s(e))}},function(e,t){"use strict";t["default"]=function(e){return e&&e.__esModule?e:{"default":e}},t.__esModule=!0},function(t,a){t.exports=e},function(e,a){e.exports=t},function(e,t,a){var s;/*! Copyright (c) 2015 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function r(){for(var e="",t=0;tm||i.year()===m&&i.month()>o)&&(a["new"]=!0),i.isSame((0,d["default"])({y:e.props.selectedDate.year(),M:e.props.selectedDate.month(),d:e.props.selectedDate.date()}))&&(a.active=!0),e.props.showToday&&i.isSame((0,d["default"])(),"day")&&(a.today=!0),(u&&i.isBefore(u)||c&&i.isAfter(c))&&(a.disabled=!0),e.props.daysOfWeekDisabled.length>0&&(a.disabled=-1!==e.props.daysOfWeekDisabled.indexOf(i.day())),t.push(l["default"].createElement("td",{className:(0,f["default"])(a),key:i.month()+"-"+i.date(),onClick:e.props.setSelectedDate},i.date())),i.weekday()===(0,d["default"])().endOf("week").weekday()&&(p=l["default"].createElement("tr",{key:i.month()+"-"+i.date()},t),r.push(p),t=[]),i.add(1,"d");return r}}return r(t,e),o(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"datepicker-days",style:{display:"block"}},l["default"].createElement("table",{className:"table-condensed"},l["default"].createElement("thead",null,l["default"].createElement("tr",null,l["default"].createElement("th",{className:"prev",onClick:this.props.subtractMonth},l["default"].createElement("span",{className:"glyphicon glyphicon-chevron-left"})),l["default"].createElement("th",{className:"switch",colSpan:"5",onClick:this.props.showMonths},d["default"].months()[this.props.viewDate.month()]," ",this.props.viewDate.year()),l["default"].createElement("th",{className:"next",onClick:this.props.addMonth},l["default"].createElement("span",{className:"glyphicon glyphicon-chevron-right"}))),l["default"].createElement("tr",null,l["default"].createElement("th",{className:"dow"},"Su"),l["default"].createElement("th",{className:"dow"},"Mo"),l["default"].createElement("th",{className:"dow"},"Tu"),l["default"].createElement("th",{className:"dow"},"We"),l["default"].createElement("th",{className:"dow"},"Th"),l["default"].createElement("th",{className:"dow"},"Fr"),l["default"].createElement("th",{className:"dow"},"Sa"))),l["default"].createElement("tbody",null,this.renderDays())))}}],[{key:"propTypes",value:{subtractMonth:u.PropTypes.func.isRequired,addMonth:u.PropTypes.func.isRequired,viewDate:u.PropTypes.object.isRequired,selectedDate:u.PropTypes.object.isRequired,showToday:u.PropTypes.bool,daysOfWeekDisabled:u.PropTypes.array,setSelectedDate:u.PropTypes.func.isRequired,showMonths:u.PropTypes.func.isRequired,minDate:u.PropTypes.object,maxDate:u.PropTypes.object},enumerable:!0},{key:"defaultProps",value:{showToday:!0},enumerable:!0}]),t}(u.Component);t["default"]=m,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var u=a(38),l=i(u),c=a(40),d=i(c),p=a(39),f=i(p),m=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderMonths=function(){var t,a,s,r,o;for(s=e.props.selectedDate.month(),o=f["default"].monthsShort(),a=0,r=[];12>a;)t={month:!0,active:a===s&&e.props.viewDate.year()===e.props.selectedDate.year()},r.push(l["default"].createElement("span",{className:(0,d["default"])(t),key:a,onClick:e.props.setViewMonth},o[a])),a++;return r}}return r(t,e),o(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"datepicker-months",style:{display:"block"}},l["default"].createElement("table",{className:"table-condensed"},l["default"].createElement("thead",null,l["default"].createElement("tr",null,l["default"].createElement("th",{className:"prev",onClick:this.props.subtractYear},"‹"),l["default"].createElement("th",{className:"switch",colSpan:"5",onClick:this.props.showYears},this.props.viewDate.year()),l["default"].createElement("th",{className:"next",onClick:this.props.addYear},"›"))),l["default"].createElement("tbody",null,l["default"].createElement("tr",null,l["default"].createElement("td",{colSpan:"7"},this.renderMonths())))))}}],[{key:"propTypes",value:{subtractYear:u.PropTypes.func.isRequired,addYear:u.PropTypes.func.isRequired,viewDate:u.PropTypes.object.isRequired,selectedDate:u.PropTypes.object.isRequired,showYears:u.PropTypes.func.isRequired,setViewMonth:u.PropTypes.func.isRequired},enumerable:!0}]),t}(u.Component);t["default"]=m,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var u=a(38),l=i(u),c=a(40),d=i(c),p=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderYears=function(){var t,a,s,r;for(r=[],s=10*parseInt(e.props.viewDate.year()/10,10),s--,a=-1;11>a;)t={year:!0,old:-1===a|10===a,active:e.props.selectedDate.year()===s},r.push(l["default"].createElement("span",{className:(0,d["default"])(t),key:s,onClick:e.props.setViewYear},s)),s++,a++;return r}}return r(t,e),o(t,[{key:"render",value:function(){var e;return e=10*parseInt(this.props.viewDate.year()/10,10),l["default"].createElement("div",{className:"datepicker-years",style:{display:"block"}},l["default"].createElement("table",{className:"table-condensed"},l["default"].createElement("thead",null,l["default"].createElement("tr",null,l["default"].createElement("th",{className:"prev",onClick:this.props.subtractDecade},"‹"),l["default"].createElement("th",{className:"switch",colSpan:"5"},e," - ",e+9),l["default"].createElement("th",{className:"next",onClick:this.props.addDecade},"›"))),l["default"].createElement("tbody",null,l["default"].createElement("tr",null,l["default"].createElement("td",{colSpan:"7"},this.renderYears())))))}}],[{key:"propTypes",value:{subtractDecade:u.PropTypes.func.isRequired,addDecade:u.PropTypes.func.isRequired,viewDate:u.PropTypes.object.isRequired,selectedDate:u.PropTypes.object.isRequired,setViewYear:u.PropTypes.func.isRequired},enumerable:!0}]),t}(u.Component);t["default"]=p,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(31)["default"],u=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var l=a(38),c=u(l),d=a(50),p=u(d),f=a(52),m=u(f),h=a(51),y=u(h),D=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.state={minutesDisplayed:!1,hoursDisplayed:!1},this.goBack=function(){return e.setState({minutesDisplayed:!1,hoursDisplayed:!1})},this.showMinutes=function(){return e.setState({minutesDisplayed:!0})},this.showHours=function(){return e.setState({hoursDisplayed:!0})},this.renderMinutes=function(){return e.state.minutesDisplayed?c["default"].createElement(p["default"],i({},e.props,{onSwitch:e.goBack})):null},this.renderHours=function(){return e.state.hoursDisplayed?c["default"].createElement(m["default"],i({},e.props,{onSwitch:e.goBack})):null},this.renderPicker=function(){return e.state.minutesDisplayed||e.state.hoursDisplayed?"":c["default"].createElement("div",{className:"timepicker-picker"},c["default"].createElement("table",{className:"table-condensed"},c["default"].createElement("tbody",null,c["default"].createElement("tr",null,c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.addHour},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-up"}))),c["default"].createElement("td",{className:"separator"}),c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.addMinute},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-up"}))),c["default"].createElement("td",{className:"separator"})),c["default"].createElement("tr",null,c["default"].createElement("td",null,c["default"].createElement("span",{className:"timepicker-hour",onClick:e.showHours},e.props.selectedDate.format("h"))),c["default"].createElement("td",{className:"separator"},":"),c["default"].createElement("td",null,c["default"].createElement("span",{className:"timepicker-minute",onClick:e.showMinutes},e.props.selectedDate.format("mm"))),c["default"].createElement("td",{className:"separator"}),c["default"].createElement("td",null,c["default"].createElement("button",{className:"btn btn-primary",onClick:e.props.togglePeriod,type:"button"},e.props.selectedDate.format("A")))),c["default"].createElement("tr",null,c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.subtractHour},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-down"}))),c["default"].createElement("td",{className:"separator"}),c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.subtractMinute},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-down"}))),c["default"].createElement("td",{className:"separator"})))))}}return r(t,e),o(t,[{key:"render",value:function(){return c["default"].createElement("div",{className:"timepicker"},this.renderPicker(),this.renderHours(),this.renderMinutes())}}],[{key:"propTypes",value:{setSelectedHour:l.PropTypes.func.isRequired,setSelectedMinute:l.PropTypes.func.isRequired,subtractHour:l.PropTypes.func.isRequired,addHour:l.PropTypes.func.isRequired,subtractMinute:l.PropTypes.func.isRequired,addMinute:l.PropTypes.func.isRequired,viewDate:l.PropTypes.object.isRequired,selectedDate:l.PropTypes.object.isRequired,togglePeriod:l.PropTypes.func.isRequired,mode:l.PropTypes.oneOf([y["default"].MODE_DATE,y["default"].MODE_DATETIME,y["default"].MODE_TIME])},enumerable:!0}]),t}(l.Component);t["default"]=D,e.exports=D,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var u=a(38),l=i(u),c=a(51),d=i(c),p=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderSwitchButton=function(){return e.props.mode===d["default"].MODE_TIME?l["default"].createElement("ul",{className:"list-unstyled"},l["default"].createElement("li",null,l["default"].createElement("span",{className:"btn picker-switch",onClick:e.props.onSwitch,style:{width:"100%"}},l["default"].createElement("span",{className:"glyphicon glyphicon-time"})))):null}}return r(t,e),o(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"timepicker-minutes","data-action":"selectMinute",style:{display:"block"}},this.renderSwitchButton(),l["default"].createElement("table",{className:"table-condensed"},l["default"].createElement("tbody",null,l["default"].createElement("tr",null,l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"00"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"05"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"10"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"15")),l["default"].createElement("tr",null,l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"20"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"25"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"30"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"35")),l["default"].createElement("tr",null,l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"40"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"45"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"50"),l["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"55")))))}}],[{key:"propTypes",value:{setSelectedMinute:u.PropTypes.func.isRequired,onSwitch:u.PropTypes.func.isRequired,mode:u.PropTypes.string.isRequired},enumerable:!0}]),t}(u.Component);t["default"]=p,e.exports=t["default"]},function(e,t){"use strict";e.exports={MODE_DATE:"date",MODE_DATETIME:"datetime",MODE_TIME:"time",SIZE_SMALL:"sm",SIZE_MEDIUM:"md",SIZE_LARGE:"lg"}},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var u=a(38),l=i(u),c=a(51),d=i(c),p=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderSwitchButton=function(){return e.props.mode===d["default"].MODE_TIME?l["default"].createElement("ul",{className:"list-unstyled"},l["default"].createElement("li",null,l["default"].createElement("span",{className:"btn picker-switch",onClick:e.props.onSwitch,style:{width:"100%"}},l["default"].createElement("span",{className:"glyphicon glyphicon-time"})))):null}}return r(t,e),o(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"timepicker-hours","data-action":"selectHour",style:{display:"block"}},this.renderSwitchButton(),l["default"].createElement("table",{className:"table-condensed"},l["default"].createElement("tbody",null,l["default"].createElement("tr",null,l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"01"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"02"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"03"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"04")),l["default"].createElement("tr",null,l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"05"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"06"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"07"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"08")),l["default"].createElement("tr",null,l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"09"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"10"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"11"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"12")),l["default"].createElement("tr",null,l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"13"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"14"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"15"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"16")),l["default"].createElement("tr",null,l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"17"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"18"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"19"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"20")),l["default"].createElement("tr",null,l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"21"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"22"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"23"),l["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"24")))))}}],[{key:"propTypes",value:{setSelectedHour:u.PropTypes.func.isRequired,onSwitch:u.PropTypes.func.isRequired,mode:u.PropTypes.string.isRequired},enumerable:!0}]),t}(u.Component);t["default"]=p,e.exports=t["default"]}])}); \ No newline at end of file +!function(){"use strict";function r(){for(var e="",t=0;tm||i.year()===m&&i.month()>o)&&(a["new"]=!0),i.isSame((0,d["default"])({y:e.props.selectedDate.year(),M:e.props.selectedDate.month(),d:e.props.selectedDate.date()}))&&(a.active=!0),e.props.showToday&&i.isSame((0,d["default"])(),"day")&&(a.today=!0),(l&&i.isBefore(l)||c&&i.isAfter(c))&&(a.disabled=!0),e.props.daysOfWeekDisabled.length>0&&(a.disabled=-1!==e.props.daysOfWeekDisabled.indexOf(i.day())),t.push(u["default"].createElement("td",{className:(0,f["default"])(a),key:i.month()+"-"+i.date(),onClick:e.props.setSelectedDate},i.date())),i.weekday()===(0,d["default"])().endOf("week").weekday()&&(p=u["default"].createElement("tr",{key:i.month()+"-"+i.date()},t),r.push(p),t=[]),i.add(1,"d");return r}}return r(t,e),o(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"datepicker-days",style:{display:"block"}},u["default"].createElement("table",{className:"table-condensed"},u["default"].createElement("thead",null,u["default"].createElement("tr",null,u["default"].createElement("th",{className:"prev",onClick:this.props.subtractMonth},u["default"].createElement("span",{className:"glyphicon glyphicon-chevron-left"})),u["default"].createElement("th",{className:"switch",colSpan:"5",onClick:this.props.showMonths},d["default"].months()[this.props.viewDate.month()]," ",this.props.viewDate.year()),u["default"].createElement("th",{className:"next",onClick:this.props.addMonth},u["default"].createElement("span",{className:"glyphicon glyphicon-chevron-right"}))),u["default"].createElement("tr",null,u["default"].createElement("th",{className:"dow"},"Su"),u["default"].createElement("th",{className:"dow"},"Mo"),u["default"].createElement("th",{className:"dow"},"Tu"),u["default"].createElement("th",{className:"dow"},"We"),u["default"].createElement("th",{className:"dow"},"Th"),u["default"].createElement("th",{className:"dow"},"Fr"),u["default"].createElement("th",{className:"dow"},"Sa"))),u["default"].createElement("tbody",null,this.renderDays())))}}],[{key:"propTypes",value:{subtractMonth:l.PropTypes.func.isRequired,addMonth:l.PropTypes.func.isRequired,viewDate:l.PropTypes.object.isRequired,selectedDate:l.PropTypes.object.isRequired,showToday:l.PropTypes.bool,daysOfWeekDisabled:l.PropTypes.array,setSelectedDate:l.PropTypes.func.isRequired,showMonths:l.PropTypes.func.isRequired,minDate:l.PropTypes.object,maxDate:l.PropTypes.object},enumerable:!0},{key:"defaultProps",value:{showToday:!0},enumerable:!0}]),t}(l.Component);t["default"]=m,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var l=a(38),u=i(l),c=a(40),d=i(c),p=a(39),f=i(p),m=a(48),h=i(m),y=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderMonths=function(){var t,a,s,r,o,n=e.props.mode===h["default"].MODE_MONTH?e.props.setSelectedMonth:e.props.setViewMonth;for(s=e.props.selectedDate.month(),o=f["default"].monthsShort(),a=0,r=[];12>a;)t={month:!0,active:a===s&&e.props.viewDate.year()===e.props.selectedDate.year()},r.push(u["default"].createElement("span",{className:(0,d["default"])(t),key:a,onClick:n},o[a])),a++;return r}}return r(t,e),o(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"datepicker-months",style:{display:"block"}},u["default"].createElement("table",{className:"table-condensed"},u["default"].createElement("thead",null,u["default"].createElement("tr",null,u["default"].createElement("th",{className:"prev",onClick:this.props.subtractYear},"‹"),u["default"].createElement("th",{className:"switch",colSpan:"5",onClick:this.props.showYears},this.props.viewDate.year()),u["default"].createElement("th",{className:"next",onClick:this.props.addYear},"›"))),u["default"].createElement("tbody",null,u["default"].createElement("tr",null,u["default"].createElement("td",{colSpan:"7"},this.renderMonths())))))}}],[{key:"propTypes",value:{subtractYear:l.PropTypes.func.isRequired,addYear:l.PropTypes.func.isRequired,viewDate:l.PropTypes.object.isRequired,selectedDate:l.PropTypes.object.isRequired,showYears:l.PropTypes.func.isRequired,setViewMonth:l.PropTypes.func.isRequired,setSelectedMonth:l.PropTypes.func.isRequired,mode:l.PropTypes.oneOf([h["default"].MODE_DATE,h["default"].MODE_MONTH,h["default"].MODE_DATETIME])},enumerable:!0}]),t}(l.Component);t["default"]=y,e.exports=t["default"]},function(e,t){"use strict";e.exports={MODE_DATE:"date",MODE_MONTH:"month",MODE_DATETIME:"datetime",MODE_TIME:"time",SIZE_SMALL:"sm",SIZE_MEDIUM:"md",SIZE_LARGE:"lg"}},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var l=a(38),u=i(l),c=a(40),d=i(c),p=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderYears=function(){var t,a,s,r;for(r=[],s=10*parseInt(e.props.viewDate.year()/10,10),s--,a=-1;11>a;)t={year:!0,old:-1===a|10===a,active:e.props.selectedDate.year()===s},r.push(u["default"].createElement("span",{className:(0,d["default"])(t),key:s,onClick:e.props.setViewYear},s)),s++,a++;return r}}return r(t,e),o(t,[{key:"render",value:function(){var e;return e=10*parseInt(this.props.viewDate.year()/10,10),u["default"].createElement("div",{className:"datepicker-years",style:{display:"block"}},u["default"].createElement("table",{className:"table-condensed"},u["default"].createElement("thead",null,u["default"].createElement("tr",null,u["default"].createElement("th",{className:"prev",onClick:this.props.subtractDecade},"‹"),u["default"].createElement("th",{className:"switch",colSpan:"5"},e," - ",e+9),u["default"].createElement("th",{className:"next",onClick:this.props.addDecade},"›"))),u["default"].createElement("tbody",null,u["default"].createElement("tr",null,u["default"].createElement("td",{colSpan:"7"},this.renderYears())))))}}],[{key:"propTypes",value:{subtractDecade:l.PropTypes.func.isRequired,addDecade:l.PropTypes.func.isRequired,viewDate:l.PropTypes.object.isRequired,selectedDate:l.PropTypes.object.isRequired,setViewYear:l.PropTypes.func.isRequired},enumerable:!0}]),t}(l.Component);t["default"]=p,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(31)["default"],l=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var u=a(38),c=l(u),d=a(51),p=l(d),f=a(52),m=l(f),h=a(48),y=l(h),D=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.state={minutesDisplayed:!1,hoursDisplayed:!1},this.goBack=function(){return e.setState({minutesDisplayed:!1,hoursDisplayed:!1})},this.showMinutes=function(){return e.setState({minutesDisplayed:!0})},this.showHours=function(){return e.setState({hoursDisplayed:!0})},this.renderMinutes=function(){return e.state.minutesDisplayed?c["default"].createElement(p["default"],i({},e.props,{onSwitch:e.goBack})):null},this.renderHours=function(){return e.state.hoursDisplayed?c["default"].createElement(m["default"],i({},e.props,{onSwitch:e.goBack})):null},this.renderPicker=function(){return e.state.minutesDisplayed||e.state.hoursDisplayed?"":c["default"].createElement("div",{className:"timepicker-picker"},c["default"].createElement("table",{className:"table-condensed"},c["default"].createElement("tbody",null,c["default"].createElement("tr",null,c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.addHour},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-up"}))),c["default"].createElement("td",{className:"separator"}),c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.addMinute},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-up"}))),c["default"].createElement("td",{className:"separator"})),c["default"].createElement("tr",null,c["default"].createElement("td",null,c["default"].createElement("span",{className:"timepicker-hour",onClick:e.showHours},e.props.selectedDate.format("h"))),c["default"].createElement("td",{className:"separator"},":"),c["default"].createElement("td",null,c["default"].createElement("span",{className:"timepicker-minute",onClick:e.showMinutes},e.props.selectedDate.format("mm"))),c["default"].createElement("td",{className:"separator"}),c["default"].createElement("td",null,c["default"].createElement("button",{className:"btn btn-primary",onClick:e.props.togglePeriod,type:"button"},e.props.selectedDate.format("A")))),c["default"].createElement("tr",null,c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.subtractHour},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-down"}))),c["default"].createElement("td",{className:"separator"}),c["default"].createElement("td",null,c["default"].createElement("a",{className:"btn",onClick:e.props.subtractMinute},c["default"].createElement("span",{className:"glyphicon glyphicon-chevron-down"}))),c["default"].createElement("td",{className:"separator"})))))}}return r(t,e),o(t,[{key:"render",value:function(){return c["default"].createElement("div",{className:"timepicker"},this.renderPicker(),this.renderHours(),this.renderMinutes())}}],[{key:"propTypes",value:{setSelectedHour:u.PropTypes.func.isRequired,setSelectedMinute:u.PropTypes.func.isRequired,subtractHour:u.PropTypes.func.isRequired,addHour:u.PropTypes.func.isRequired,subtractMinute:u.PropTypes.func.isRequired,addMinute:u.PropTypes.func.isRequired,viewDate:u.PropTypes.object.isRequired,selectedDate:u.PropTypes.object.isRequired,togglePeriod:u.PropTypes.func.isRequired,mode:u.PropTypes.oneOf([y["default"].MODE_DATE,y["default"].MODE_DATETIME,y["default"].MODE_TIME])},enumerable:!0}]),t}(u.Component);t["default"]=D,e.exports=D,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var l=a(38),u=i(l),c=a(48),d=i(c),p=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderSwitchButton=function(){return e.props.mode===d["default"].MODE_TIME?u["default"].createElement("ul",{className:"list-unstyled"},u["default"].createElement("li",null,u["default"].createElement("span",{className:"btn picker-switch",onClick:e.props.onSwitch,style:{width:"100%"}},u["default"].createElement("span",{className:"glyphicon glyphicon-time"})))):null}}return r(t,e),o(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"timepicker-minutes","data-action":"selectMinute",style:{display:"block"}},this.renderSwitchButton(),u["default"].createElement("table",{className:"table-condensed"},u["default"].createElement("tbody",null,u["default"].createElement("tr",null,u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"00"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"05"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"10"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"15")),u["default"].createElement("tr",null,u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"20"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"25"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"30"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"35")),u["default"].createElement("tr",null,u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"40"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"45"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"50"),u["default"].createElement("td",{className:"minute",onClick:this.props.setSelectedMinute},"55")))))}}],[{key:"propTypes",value:{setSelectedMinute:l.PropTypes.func.isRequired,onSwitch:l.PropTypes.func.isRequired,mode:l.PropTypes.string.isRequired},enumerable:!0}]),t}(l.Component);t["default"]=p,e.exports=t["default"]},function(e,t,a){"use strict";var s=a(2)["default"],r=a(18)["default"],o=a(27)["default"],n=a(30)["default"],i=a(37)["default"];Object.defineProperty(t,"__esModule",{value:!0});var l=a(38),u=i(l),c=a(48),d=i(c),p=function(e){function t(){var e=this;n(this,t),s(Object.getPrototypeOf(t.prototype),"constructor",this).apply(this,arguments),this.renderSwitchButton=function(){return e.props.mode===d["default"].MODE_TIME?u["default"].createElement("ul",{className:"list-unstyled"},u["default"].createElement("li",null,u["default"].createElement("span",{className:"btn picker-switch",onClick:e.props.onSwitch,style:{width:"100%"}},u["default"].createElement("span",{className:"glyphicon glyphicon-time"})))):null}}return r(t,e),o(t,[{key:"render",value:function(){return u["default"].createElement("div",{className:"timepicker-hours","data-action":"selectHour",style:{display:"block"}},this.renderSwitchButton(),u["default"].createElement("table",{className:"table-condensed"},u["default"].createElement("tbody",null,u["default"].createElement("tr",null,u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"01"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"02"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"03"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"04")),u["default"].createElement("tr",null,u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"05"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"06"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"07"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"08")),u["default"].createElement("tr",null,u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"09"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"10"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"11"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"12")),u["default"].createElement("tr",null,u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"13"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"14"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"15"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"16")),u["default"].createElement("tr",null,u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"17"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"18"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"19"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"20")),u["default"].createElement("tr",null,u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"21"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"22"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"23"),u["default"].createElement("td",{className:"hour",onClick:this.props.setSelectedHour},"24")))))}}],[{key:"propTypes",value:{setSelectedHour:l.PropTypes.func.isRequired,onSwitch:l.PropTypes.func.isRequired,mode:l.PropTypes.string.isRequired},enumerable:!0}]),t}(l.Component);t["default"]=p,e.exports=t["default"]}])}); \ No newline at end of file diff --git a/package.json b/package.json index 03aba0b9..a17d7596 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-bootstrap-datetimepicker", - "version": "0.0.22", + "version": "0.0.23", "description": "A bootstrap datetime picker component for React.js", "homepage": "http://dev.quri.com/react-bootstrap-datetimepicker/", "repository": { From 26922463e8aca09d8b487911edb760f8cb39b71e Mon Sep 17 00:00:00 2001 From: maggie-mu Date: Fri, 20 Nov 2015 17:40:27 +1100 Subject: [PATCH 03/73] add the validation classes, allow date picker to show on the top or the bottom and fix related look and feel --- src/DateTimeField.js | 59 +++++++++++++++++++++++++------------ src/DateTimePicker.js | 3 +- src/DateTimePickerMonths.js | 5 ++-- src/DateTimePickerYears.js | 5 ++-- 4 files changed, 45 insertions(+), 27 deletions(-) diff --git a/src/DateTimeField.js b/src/DateTimeField.js index 76857c2d..1623a79a 100644 --- a/src/DateTimeField.js +++ b/src/DateTimeField.js @@ -1,4 +1,5 @@ import React, { Component, PropTypes } from "react"; +import ReactDOM from "react-dom"; import moment from "moment"; import classnames from "classnames"; import DateTimePicker from "./DateTimePicker.js"; @@ -49,7 +50,8 @@ export default class DateTimeField extends Component { showToday: PropTypes.bool, viewMode: PropTypes.string, size: PropTypes.oneOf([Constants.SIZE_SMALL, Constants.SIZE_MEDIUM, Constants.SIZE_LARGE]), - daysOfWeekDisabled: PropTypes.arrayOf(PropTypes.number) + daysOfWeekDisabled: PropTypes.arrayOf(PropTypes.number), + isValid: PropTypes.bool } state = { @@ -65,7 +67,8 @@ export default class DateTimeField extends Component { }, viewDate: moment(this.props.dateTime, this.props.format, true).startOf("month"), selectedDate: moment(this.props.dateTime, this.props.format, true), - inputValue: typeof this.props.defaultText !== "undefined" ? this.props.defaultText : moment(this.props.dateTime, this.props.format, true).format(this.resolvePropsInputFormat()) + inputValue: typeof this.props.defaultText !== "undefined" ? this.props.defaultText : moment(this.props.dateTime, this.props.format, true).format(this.resolvePropsInputFormat()), + isValid: true } componentWillReceiveProps = (nextProps) => { @@ -83,10 +86,10 @@ export default class DateTimeField extends Component { return this.setState(state); } - - onChange = (event) => { const value = event.target == null ? event : event.target.value; + + this.setIsValid(this.checkIsValid(value)); if (moment(value, this.state.inputFormat, true).isValid()) { this.setState({ selectedDate: moment(value, this.state.inputFormat, true), @@ -102,6 +105,16 @@ export default class DateTimeField extends Component { } + checkIsValid = (value) => { + return moment(value, this.state.inputFormat, true).isValid() || value === this.props.defaultText || value === ''; + } + + setIsValid = (isValid) => { + return this.setState({ + isValid: isValid + }) + } + getValue = () => { return moment(this.state.inputValue, this.props.inputFormat, true).format(this.props.format); } @@ -123,7 +136,10 @@ export default class DateTimeField extends Component { setSelectedDate = (e) => { const { target } = e; + const value = target == null ? event : event.target.value; + if (target.className && !target.className.match(/disabled/g)) { + this.setIsValid(true); let month; if (target.className.indexOf("new") >= 0) month = this.state.viewDate.month() + 1; else if (target.className.indexOf("old") >= 0) month = this.state.viewDate.month() - 1; @@ -141,6 +157,7 @@ export default class DateTimeField extends Component { } setSelectedHour = (e) => { + this.setIsValid(true); return this.setState({ selectedDate: this.state.selectedDate.clone().hour(parseInt(e.target.innerHTML)).minute(this.state.selectedDate.minutes()) }, function() { @@ -153,6 +170,7 @@ export default class DateTimeField extends Component { } setSelectedMinute = (e) => { + this.setIsValid(true); return this.setState({ selectedDate: this.state.selectedDate.clone().hour(this.state.selectedDate.hours()).minute(parseInt(e.target.innerHTML)) }, function() { @@ -272,32 +290,36 @@ export default class DateTimeField extends Component { } onClick = () => { - let classes, gBCR, offset, placePosition, scrollTop, styles; + let classes, gBCR, offset, placePosition, scrollTop, styles, widgetOffsetHeight, clientHeight, height; if (this.state.showPicker) { return this.closePicker(); } else { this.setState({ showPicker: true }); + classes = {}; gBCR = this.refs.dtpbutton.getBoundingClientRect(); - classes = { - "bootstrap-datetimepicker-widget": true, - "dropdown-menu": true - }; + offset = { top: gBCR.top + window.pageYOffset - document.documentElement.clientTop, - left: gBCR.left + window.pageXOffset - document.documentElement.clientLeft + left: 0 }; offset.top = offset.top + this.refs.datetimepicker.offsetHeight; + //Support for both old version of react and new version (v1.4.2) of react + //The new version of react return the child refs as a component rather than a DomNode + widgetOffsetHeight = this.refs.widget.offsetHeight || ReactDOM.findDOMNode(this.refs.widget).offsetHeight; + clientHeight = this.refs.widget.clientHeight || ReactDOM.findDOMNode(this.refs.widget).clientHeight; + height = this.refs.widget.height || ReactDOM.findDOMNode(this.refs.widget).height; + scrollTop = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop; - placePosition = this.props.direction === "up" ? "top" : this.props.direction === "bottom" ? "bottom" : this.props.direction === "auto" ? offset.top + this.refs.widget.offsetHeight > window.offsetHeight + scrollTop && this.refs.widget.offsetHeight + this.refs.datetimepicker.offsetHeight > offset.top ? "top" : "bottom" : void 0; + placePosition = this.props.direction === "up" ? "top" : this.props.direction === "bottom" ? "bottom" : this.props.direction === "auto" ? offset.top + widgetOffsetHeight > window.offsetHeight + scrollTop && widgetOffsetHeight + this.refs.datetimepicker.offsetHeight > offset.top ? "top" : "bottom" : void 0; if (placePosition === "top") { - offset.top = -this.refs.widget.offsetHeight - this.clientHeight - 2; + offset.top = -widgetOffsetHeight - 2; classes.top = true; classes.bottom = false; classes["pull-right"] = true; } else { - offset.top = 40; + offset.top = 35; classes.top = false; classes.bottom = true; classes["pull-right"] = true; @@ -306,7 +328,7 @@ export default class DateTimeField extends Component { display: "block", position: "absolute", top: offset.top, - left: "auto", + left: offset.left, right: 40 }; return this.setState({ @@ -319,7 +341,7 @@ export default class DateTimeField extends Component { closePicker = () => { let style = {...this.state.widgetStyle}; style.left = -9999; - style.display = "none"; + style.display = "block"; return this.setState({ showPicker: false, widgetStyle: style @@ -355,7 +377,7 @@ export default class DateTimeField extends Component { render() { return ( -
+
{this.renderOverlay()} -
- +
+ @@ -400,4 +422,3 @@ export default class DateTimeField extends Component { ); } } - diff --git a/src/DateTimePicker.js b/src/DateTimePicker.js index 3f6927cc..96c85083 100644 --- a/src/DateTimePicker.js +++ b/src/DateTimePicker.js @@ -103,7 +103,7 @@ export default class DateTimePicker extends Component { render() { return ( -
+