UNPKG

@massds/mayflower-react

Version:

React versions of Mayflower design system UI components

114 lines (101 loc) 4.18 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * OperationalHours module. * @module @massds/mayflower-react/OperationalHours * @requires module:@massds/mayflower-assets/scss/01-atoms/operational-hours */ var getDayOfWeek = function getDayOfWeek() { var d = new Date(); var weekday = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; return weekday[d.getDay()]; }; var currentDay = getDayOfWeek(); var OperationalHours = function OperationalHours(props) { var listing = props.listKey ? '--listing' : ''; return /*#__PURE__*/_react["default"].createElement("div", { className: "ma__operational-hours" }, /*#__PURE__*/_react["default"].createElement("table", { className: "ma__operational-hours-table" + listing }, /*#__PURE__*/_react["default"].createElement("tbody", null, props.hours && Object.entries(props.hours).map(function (_ref) { var key = _ref[0], value = _ref[1]; var active = props.showActive && key === props.currentDay ? '--active' : ''; var rowKey = props.listKey ? props.listKey + "-row-" + key : null; var status = typeof value.status !== 'undefined' && value.status !== null ? value.status : true; var time = ''; var dateFormat = new Intl.DateTimeFormat('en-US', { hour12: true, hour: 'numeric', minute: 'numeric' }); if (status === false) { time = 'Closed'; } else { time = dateFormat.format(value.start) + " - " + dateFormat.format(value.end); } return /*#__PURE__*/_react["default"].createElement("tr", { key: rowKey, className: "ma__operational-hours-row" + active }, /*#__PURE__*/_react["default"].createElement("td", { className: "ma__operational-hours-day" }, key), /*#__PURE__*/_react["default"].createElement("td", { className: "ma__operational-hours-time" }, time)); })))); }; OperationalHours.propTypes = process.env.NODE_ENV !== "production" ? { /** An object that is keyed by the days of the week. Each day contains the following: status: represents an open or closed day of business for the week. If true, the business is open. start: The time the business opens. end: The time the business closes. */ hours: _propTypes["default"].shape({ monday: _propTypes["default"].shape({ status: _propTypes["default"].bool, start: _propTypes["default"].instanceOf(Date), end: _propTypes["default"].instanceOf(Date) }), tuesday: _propTypes["default"].shape({ start: _propTypes["default"].instanceOf(Date), end: _propTypes["default"].instanceOf(Date) }), wednesday: _propTypes["default"].shape({ start: _propTypes["default"].instanceOf(Date), end: _propTypes["default"].instanceOf(Date) }), thursday: _propTypes["default"].shape({ start: _propTypes["default"].instanceOf(Date), end: _propTypes["default"].instanceOf(Date) }), friday: _propTypes["default"].shape({ start: _propTypes["default"].instanceOf(Date), end: _propTypes["default"].instanceOf(Date) }), saturday: _propTypes["default"].shape({ start: _propTypes["default"].instanceOf(Date), end: _propTypes["default"].instanceOf(Date) }), sunday: _propTypes["default"].shape({ start: _propTypes["default"].instanceOf(Date), end: _propTypes["default"].instanceOf(Date) }) }).isRequired, /** Whether to show if currently active or not. */ showActive: _propTypes["default"].bool, /** A unique string used for generating the display of days for week. */ listKey: _propTypes["default"].string.isRequired, /** Current day for the week that gets highlighted. */ currentDay: _propTypes["default"].string } : {}; OperationalHours.defaultProps = { showActive: true, currentDay: currentDay }; var _default = OperationalHours; exports["default"] = _default; module.exports = exports.default;