@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
114 lines (101 loc) • 4.18 kB
JavaScript
"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;