chowa
Version:
UI component library based on React
55 lines (54 loc) • 2.57 kB
JavaScript
/**
* @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.
*/
;
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;