UNPKG

chowa

Version:

UI component library based on React

55 lines (54 loc) 2.57 kB
/** * @license chowa v1.1.3 * * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn). * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const React = require("react"); const classNames = require("classnames"); const utils_1 = require("../../utils"); const RowEventLayout = (props) => { const { editable, eventsMatrix, colAmount, onContextMenu } = props; const rowNodes = []; eventsMatrix.forEach((events, key) => { const eventNodes = []; let spanAmount = 0; events.forEach((event, i) => { const { index, span, begin, end, content, type, category } = event; const eventClass = classNames({ [utils_1.preClass('full-calendar-row-event')]: true, [utils_1.preClass(`full-calendar-event-${type}`)]: true, [utils_1.preClass('full-calendar-row-event-begin')]: begin, [utils_1.preClass('full-calendar-row-event-end')]: end }); if (i === 0 && index !== 0) { eventNodes.push(React.createElement("td", { colSpan: index, key: `before-${index}` })); spanAmount += index; } if (i > 0) { const { index: preIndex, span: preSpan } = events[i - 1]; if (index > preIndex + preSpan) { const middleSpan = index - preIndex - preSpan; eventNodes.push(React.createElement("td", { colSpan: middleSpan, key: `middle-${index}` })); spanAmount += middleSpan; } } eventNodes.push(React.createElement("td", { colSpan: span, key: index }, React.createElement("div", { onContextMenu: editable ? onContextMenu.bind(this, undefined, event) : null, className: eventClass }, category && `${category} · `, content))); spanAmount += span; if (i === events.length - 1 && spanAmount !== colAmount) { eventNodes.push(React.createElement("td", { colSpan: colAmount - spanAmount, key: `after-${index}` })); } }); rowNodes.push(React.createElement("tr", { key: key }, eventNodes)); }); return (React.createElement("table", { className: utils_1.preClass('full-calendar-row-events') }, React.createElement("tbody", null, rowNodes))); }; exports.default = RowEventLayout;