UNPKG

terra-date-picker

Version:

The terra-date-picker component provides users a way to enter or select a date from the date picker.

131 lines (130 loc) 5.59 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _momentTimezone = _interopRequireDefault(require("moment-timezone")); var _DatePicker = _interopRequireDefault(require("./DatePicker")); var _excluded = ["endDate", "endName", "startDate", "startName", "onChange"]; function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var propTypes = { /** * An ISO 8601 string representation of the default end date for a date range. */ endDate: _propTypes.default.string, /** * Name of the endDate input. The name should be unique. */ endName: _propTypes.default.string.isRequired, /** * An ISO 8601 string representation of the selected start date. */ startDate: _propTypes.default.string, /** * Name of the startDate input. The name should be unique. */ startName: _propTypes.default.string.isRequired, /** * A callback function to execute when a valid date is selected or entered. The parameters in the function are event, start date, end date. */ onChange: _propTypes.default.func }; var defaultProps = { endDate: undefined, startDate: undefined, onChange: undefined }; var DateRange = /*#__PURE__*/function (_React$Component) { function DateRange(props) { var _this; (0, _classCallCheck2.default)(this, DateRange); _this = _callSuper(this, DateRange, [props]); _this.state = { startDate: props.startDate, endDate: props.endDate }; _this.handleChangeStart = _this.handleChangeStart.bind(_this); _this.handleChangeEnd = _this.handleChangeEnd.bind(_this); return _this; } (0, _inherits2.default)(DateRange, _React$Component); return (0, _createClass2.default)(DateRange, [{ key: "handleChange", value: function handleChange(event, _ref) { var _ref$startDate = _ref.startDate, startDate = _ref$startDate === void 0 ? this.state.startDate : _ref$startDate, _ref$endDate = _ref.endDate, endDate = _ref$endDate === void 0 ? this.state.endDate : _ref$endDate; var startDateForRange = startDate; var endDateForRange = endDate; if ((0, _momentTimezone.default)(startDateForRange).isAfter((0, _momentTimezone.default)(endDateForRange))) { var _ref2 = [endDateForRange, startDateForRange]; startDateForRange = _ref2[0]; endDateForRange = _ref2[1]; } this.setState({ startDate: startDateForRange, endDate: endDateForRange }); if (this.props.onChange) { this.props.onChange(event, startDateForRange, endDateForRange); } } }, { key: "handleChangeStart", value: function handleChangeStart(event, startDate) { this.handleChange(event, { startDate: startDate }); } }, { key: "handleChangeEnd", value: function handleChangeEnd(event, endDate) { this.handleChange(event, { endDate: endDate }); } }, { key: "render", value: function render() { var _this$props = this.props, endDate = _this$props.endDate, endName = _this$props.endName, startDate = _this$props.startDate, startName = _this$props.startName, onChange = _this$props.onChange, customProps = (0, _objectWithoutProperties2.default)(_this$props, _excluded); return /*#__PURE__*/_react.default.createElement("div", { className: "terra-DatePicker-range" }, /*#__PURE__*/_react.default.createElement(_DatePicker.default, (0, _extends2.default)({}, customProps, { selectedDate: this.state.startDate, isStartDateRange: true, startDate: this.state.startDate, endDate: this.state.endDate, name: startName, onChange: this.handleChangeStart })), /*#__PURE__*/_react.default.createElement(_DatePicker.default, (0, _extends2.default)({}, customProps, { selectedDate: this.state.endDate, isEndDateRange: true, startDate: this.state.startDate, endDate: this.state.endDate, name: endName, onChange: this.handleChangeEnd }))); } }]); }(_react.default.Component); DateRange.propTypes = propTypes; DateRange.defaultProps = defaultProps; var _default = exports.default = DateRange;