UNPKG

terra-date-picker

Version:

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

217 lines (216 loc) 9.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _bind = _interopRequireDefault(require("classnames/bind")); var _day = _interopRequireDefault(require("./day")); var _week_number = _interopRequireDefault(require("./week_number")); var utils = _interopRequireWildcard(require("./date_utils")); var _react_datepickerModule = _interopRequireDefault(require("./stylesheets/react_datepicker.module.scss")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } 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 cx = _bind.default.bind(_react_datepickerModule.default); var Week = exports.default = /*#__PURE__*/function (_React$Component) { function Week() { var _this; (0, _classCallCheck2.default)(this, Week); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, Week, [].concat(args)); (0, _defineProperty2.default)(_this, "handleDayClick", function (day, event) { if (_this.props.onDayClick) { _this.props.onDayClick(day, event); } }); (0, _defineProperty2.default)(_this, "handleDayMouseEnter", function (day) { if (_this.props.onDayMouseEnter) { _this.props.onDayMouseEnter(day); } }); (0, _defineProperty2.default)(_this, "handleDayMouseDown", function () { if (_this.props.onDayMouseDown) { _this.props.onDayMouseDown(); } }); (0, _defineProperty2.default)(_this, "handleWeekClick", function (day, weekNumber, event) { if (typeof _this.props.onWeekSelect === 'function') { _this.props.onWeekSelect(day, weekNumber, event); } }); (0, _defineProperty2.default)(_this, "formatWeekNumber", function (startOfWeek) { if (_this.props.formatWeekNumber) { return _this.props.formatWeekNumber(startOfWeek); } return utils.getWeek(startOfWeek); }); (0, _defineProperty2.default)(_this, "renderDays", function () { var startOfWeek = utils.getStartOfWeek(utils.cloneDate(_this.props.day)); var days = []; var weekNumber = _this.formatWeekNumber(startOfWeek); if (_this.props.showWeekNumber) { var onClickAction = _this.props.onWeekSelect ? _this.handleWeekClick.bind(_this, startOfWeek, weekNumber) : undefined; days.push( /*#__PURE__*/_react.default.createElement(_week_number.default, { key: "W", weekNumber: weekNumber, onClick: onClickAction })); } return days.concat([0, 1, 2, 3, 4, 5, 6].map(function (offset) { var day = utils.addDays(utils.cloneDate(startOfWeek), offset); return /*#__PURE__*/_react.default.createElement(_day.default, { isCalendarKeyboardFocused: _this.props.isCalendarKeyboardFocused, key: offset, day: day, month: _this.props.month, onClick: _this.handleDayClick.bind(_this, day), onMouseEnter: _this.handleDayMouseEnter.bind(_this, day), onDayMouseDown: _this.handleDayMouseDown, minDate: _this.props.minDate, maxDate: _this.props.maxDate, excludeDates: _this.props.excludeDates, includeDates: _this.props.includeDates, initialTimeZone: _this.props.initialTimeZone, inline: _this.props.inline, highlightDates: _this.props.highlightDates, selectingDate: _this.props.selectingDate, filterDate: _this.props.filterDate, preSelection: _this.props.preSelection, selected: _this.props.selected, selectsStart: _this.props.selectsStart, selectsEnd: _this.props.selectsEnd, startDate: _this.props.startDate, endDate: _this.props.endDate, dayClassName: _this.props.dayClassName }); })); }); return _this; } (0, _inherits2.default)(Week, _React$Component); return (0, _createClass2.default)(Week, [{ key: "render", value: function render() { return /*#__PURE__*/_react.default.createElement("div", { className: cx('react-datepicker-week') }, this.renderDays()); } }]); }(_react.default.Component); (0, _defineProperty2.default)(Week, "propTypes", { /** * Day Value Entered. */ day: _propTypes.default.object.isRequired, /** * A callback function for custom day class names. */ dayClassName: _propTypes.default.func, /** * Maximum Date value for a date range. */ endDate: _propTypes.default.object, /** * Array to store values of date that are disabled to pick . */ excludeDates: _propTypes.default.array, /** * A callback function to be executed to determine if a given date should be filtered. */ filterDate: _propTypes.default.func, /** * A callback function to format week number . */ formatWeekNumber: _propTypes.default.func, /** * Highlight range of dates with custom classes. */ highlightDates: _propTypes.default.instanceOf(WeakMap), /** * Show dates only in the given array. */ includeDates: _propTypes.default.array, /** * Timezone value to indicate in which timezone the date-time component is rendered. * The value provided should be a valid [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) string, else will default to browser/local timezone. */ initialTimeZone: _propTypes.default.string, /** * Prop to show inline version of date picker component. */ inline: _propTypes.default.bool, /** * Maximum value of date that can be selected by user. */ maxDate: _propTypes.default.object, /** * Minimum value of date that can be selected by user. */ minDate: _propTypes.default.object, /** * Month value picked by user. */ month: _propTypes.default.number, /** * A callback function to execute when day is selected. */ onDayClick: _propTypes.default.func, /** * A callback function to execute when the mouse cursor hovers over the day.. */ onDayMouseEnter: _propTypes.default.func, /** * A callback function to execute on mouse down on day. * requires no parameter. */ onDayMouseDown: _propTypes.default.func, /** * A callback function to execute when a week is selected. */ onWeekSelect: _propTypes.default.func, /** * Prop to store previous selection value. */ preSelection: _propTypes.default.object, /** * Prop to store current selection value. */ selected: _propTypes.default.object, /** * Prop to store value while selecting date. */ selectingDate: _propTypes.default.object, /** * Mark date picker to select end of range . */ selectsEnd: _propTypes.default.bool, /** * Mark date picker to select start of range . */ selectsStart: _propTypes.default.bool, /** * Prop to show week numbers . */ showWeekNumber: _propTypes.default.bool, /** * Minimum date for a given range. */ startDate: _propTypes.default.object, /** * Whether or not calendar is opened via keyboard */ isCalendarKeyboardFocused: _propTypes.default.bool });