UNPKG

zmp-ui

Version:

Zalo Mini App framework

81 lines 3.64 kB
import React, { useContext } from "react"; import classNames from "clsx"; import { getPrefixCls } from "../../utils/class"; import { CSSTransition, TransitionGroup } from "react-transition-group"; import { CellType } from "./props-type"; import CalendarCell from "./CalendarCell"; import { CalendarContext } from "./context"; var CalendarPanel = /*#__PURE__*/React.forwardRef(function (props, ref) { var header = props.header, body = props.body, onCellClick = props.onCellClick, numberOfLine = props.numberOfLine; var _useContext = useContext(CalendarContext), cellRender = _useContext.cellRender, fullCellRender = _useContext.fullCellRender, mode = _useContext.mode, selectedDate = _useContext.selectedDate; var prefixCls = getPrefixCls("calendar-panel"); var classes = classNames(prefixCls, [prefixCls + "-" + mode]); var compareDate = function compareDate(date1, date2) { return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate(); }; return /*#__PURE__*/React.createElement("div", { className: classes, ref: ref }, /*#__PURE__*/React.createElement("div", { className: prefixCls + "-body" }, /*#__PURE__*/React.createElement("table", { className: prefixCls + "-content" }, header.length > 0 && /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, header.map(function (item, index) { return /*#__PURE__*/React.createElement("th", { key: index }, item); }))), /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement(TransitionGroup, { component: null }, body.map(function (item, index) { var key = String(index); if (numberOfLine && index >= numberOfLine) return null; return /*#__PURE__*/React.createElement(CSSTransition, { key: key, timeout: 400, classNames: "item" }, /*#__PURE__*/React.createElement("tr", null, item.map(function (cell) { var _classNames; var cellContent = cell.content; if (typeof cellRender === "function") { var cellInfo = { originNode: cell.content, today: new Date(), type: mode }; cellContent = cellRender(cell.value, cellInfo); } var fullCellContent = /*#__PURE__*/React.createElement(CalendarCell, { label: cell.label, content: cellContent }); if (typeof fullCellRender === "function") { var _cellInfo = { originNode: fullCellContent, today: new Date(), type: mode }; fullCellContent = fullCellRender(cell.value, _cellInfo); } return /*#__PURE__*/React.createElement("td", { key: cell.label, className: classNames(prefixCls + "-cell", (_classNames = {}, _classNames[prefixCls + "-cell-in-view"] = cell.type === CellType.IN_VIEW, _classNames[prefixCls + "-cell-selected"] = compareDate(cell.value, selectedDate), _classNames[prefixCls + "-cell-today"] = compareDate(cell.value, new Date()), _classNames[prefixCls + "-cell-disabled"] = cell.disabled, _classNames)), onClick: function onClick() { var currentDate = new Date(); if (!cell.disabled) { var selectedValue = new Date(cell.value.setHours(currentDate.getHours(), currentDate.getMinutes(), currentDate.getSeconds(), currentDate.getMilliseconds())); onCellClick == null || onCellClick(selectedValue, cell.type); } }, role: "presentation" }, fullCellContent); }))); })))))); }); export default CalendarPanel;