UNPKG

chayns-components

Version:

A set of beautiful React components for developing chayns® applications.

97 lines (94 loc) 4.39 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _clsx = _interopRequireDefault(require("clsx")); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _color = require("../../../utils/color"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /* eslint-disable max-len,react/forbid-prop-types */ class Week extends _react.Component { constructor(props) { super(props); this.schemeColor = (0, _color.hexStringToRgb)(chayns.env.site.color); } renderDays() { const { onClick, focus, groupFocus, data } = this.props; const days = []; let i = 0; for (i; i < data.length; i += 1) { let background = ''; const day = data[i]; let percentage; let start; let color = this.schemeColor; const backgroundColor = day.date.getDate() === focus.getDate() && day.date.getMonth() === focus.getMonth() && day.date.getFullYear() === focus.getFullYear() ? `rgba(${this.schemeColor.r},${this.schemeColor.g},${this.schemeColor.b},0.3)` : ''; const classes = (0, _clsx.default)('week_item', day && [day.id && "week_item_filled", day.groupId && groupFocus === day.groupId && "week_item_focused"]); if (day && day.id) { start = Math.round(new Date(day.startTime).getHours() / 24 * 100); percentage = Math.round((day.endTime - day.startTime) / (24 * 60 * 60 * 1000) * 100); if (day.color) { /** * For correct calculating of the percentage it is required, that the entry is in one day * @type {Date} */ color = (0, _color.hexStringToRgb)(day.color); } background = `linear-gradient(to right, rgba(${color.r},${color.g},${color.b},0.5) ${start}%,rgba(${color.r},${color.g},${color.b},1) ${start + 1}%,rgba(${color.r},${color.g},${color.b},1) ${start + percentage}%,rgba(${color.r},${color.g},${color.b},0.5) ${start + percentage + 1}%)`; } days.push( /*#__PURE__*/_react.default.createElement("div", { className: classes, style: { background, backgroundColor }, key: i, onClick: event => onClick(event, day) })); } return days; } render() { const { weekWidth } = this.props; const days = this.renderDays(); return /*#__PURE__*/_react.default.createElement("div", { className: "week", style: { width: `${weekWidth * 0.9}px`, marginLeft: `${weekWidth * 0.1}px` } }, /*#__PURE__*/_react.default.createElement("div", { className: "week_table" }, /*#__PURE__*/_react.default.createElement("div", { className: "week_row" }, days))); } } exports.default = Week; Week.propTypes = { startTime: _propTypes.default.objectOf(Date), data: _propTypes.default.array, onClick: _propTypes.default.func, focus: _propTypes.default.objectOf(Date), groupFocus: _propTypes.default.number, weekWidth: _propTypes.default.number }; Week.defaultProps = { data: [], startTime: null, onClick: null, focus: null, groupFocus: null, weekWidth: null }; Week.displayName = 'Week'; //# sourceMappingURL=Week.js.map