UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

650 lines (649 loc) 32.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "CalendarItem", { enumerable: true, get: function() { return CalendarItem; } }); var _interop_require_default = require("@swc/helpers/_/_interop_require_default"); var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); var _define_property = require("@swc/helpers/_/_define_property"); var _object_spread = require("@swc/helpers/_/_object_spread"); var _object_spread_props = require("@swc/helpers/_/_object_spread_props"); var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array"); var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array"); var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react")); var _classnames = /*#__PURE__*/ _interop_require_default._(require("classnames")); var _typings = require("../../utils/typings"); var _date = require("../../utils/date"); var _raf = /*#__PURE__*/ _interop_require_default._(require("../../utils/raf")); var _configprovider = require("../configprovider"); var _usepropsvalue = require("../../hooks/use-props-value"); var _utils = require("../calendar/utils"); var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), { type: 'single', autoBackfill: false, popup: true, title: '', startDate: _date.Utils.getDay(0), endDate: _date.Utils.getDay(365), showToday: true, startText: '', endText: '', confirmText: '', showTitle: true, showSubTitle: true, scrollAnimation: true, firstDayOfWeek: 0, disableDate: function disableDate(date) { return false; }, renderHeaderButtons: undefined, renderDay: undefined, renderDayTop: undefined, renderDayBottom: undefined, onConfirm: function onConfirm(data) {}, onUpdate: function onUpdate() {}, onDayClick: function onDayClick(data) {}, onPageChange: function onPageChange(data) {} }); var CalendarItem = /*#__PURE__*/ _react.default.forwardRef(function(props, ref) { var locale = (0, _configprovider.useConfig)().locale; var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), style = _$_object_spread.style, className = _$_object_spread.className, children = _$_object_spread.children, popup = _$_object_spread.popup, type = _$_object_spread.type, autoBackfill = _$_object_spread.autoBackfill, title = _$_object_spread.title, defaultValue = _$_object_spread.defaultValue, startDate = _$_object_spread.startDate, endDate = _$_object_spread.endDate, showToday = _$_object_spread.showToday, startText = _$_object_spread.startText, endText = _$_object_spread.endText, confirmText = _$_object_spread.confirmText, showTitle = _$_object_spread.showTitle, showSubTitle = _$_object_spread.showSubTitle, scrollAnimation = _$_object_spread.scrollAnimation, firstDayOfWeek = _$_object_spread.firstDayOfWeek, disableDate = _$_object_spread.disableDate, renderHeaderButtons = _$_object_spread.renderHeaderButtons, renderBottomButton = _$_object_spread.renderBottomButton, renderDay = _$_object_spread.renderDay, renderDayTop = _$_object_spread.renderDayTop, renderDayBottom = _$_object_spread.renderDayBottom, value = _$_object_spread.value, onConfirm = _$_object_spread.onConfirm, onUpdate = _$_object_spread.onUpdate, onDayClick = _$_object_spread.onDayClick, onPageChange = _$_object_spread.onPageChange; var weekdays = locale.calendaritem.weekdays; var weeks = (0, _to_consumable_array._)(weekdays.slice(firstDayOfWeek, 7)).concat((0, _to_consumable_array._)(weekdays.slice(0, firstDayOfWeek))); var monthTitle = locale.calendaritem.monthTitle; var _useState = (0, _sliced_to_array._)((0, _react.useState)(''), 2), yearMonthTitle = _useState[0], setYearMonthTitle = _useState[1]; var _useState1 = (0, _sliced_to_array._)((0, _react.useState)([]), 2), monthsData = _useState1[0], setMonthsData = _useState1[1]; var _useState2 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), monthsNum = _useState2[0], setMonthsNum = _useState2[1]; var _useState3 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), translateY = _useState3[0], setTranslateY = _useState3[1]; var _useState4 = (0, _sliced_to_array._)((0, _react.useState)([]), 2), monthDefaultRange = _useState4[0], setMonthDefaultRange = _useState4[1]; // 初始化开始结束数据 var propStartDate = startDate || _date.Utils.getDay(0); var propEndDate = endDate || _date.Utils.getDay(365); var startDates = (0, _utils.splitDate)(propStartDate); var endDates = (0, _utils.splitDate)(propEndDate); var _useState5 = (0, _sliced_to_array._)((0, _react.useState)({ currDateArray: [] }), 1), state = _useState5[0]; var getMonthsPanel = function getMonthsPanel() { return monthsPanel.current; }; var getMonthsRef = function getMonthsRef() { return monthsRef.current; }; var resetDefaultValue = function resetDefaultValue() { if (defaultValue || Array.isArray(defaultValue) && defaultValue.length > 0) { return type !== 'single' ? (0, _to_consumable_array._)(defaultValue) : defaultValue; } return undefined; }; var _usePropsValue = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({ value: value, defaultValue: resetDefaultValue(), finalValue: [], onChange: function onChange(val) {} }), 2), currentDate = _usePropsValue[0], setCurrentDate = _usePropsValue[1]; var weeksPanel = (0, _react.useRef)(null); var monthsRef = (0, _react.useRef)(null); var monthsPanel = (0, _react.useRef)(null); var viewAreaRef = (0, _react.useRef)(null); var _useState6 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), avgHeight = _useState6[0], setAvgHeight = _useState6[1]; var viewHeight = 0; var classPrefix = 'nut-calendar'; var dayPrefix = 'nut-calendar-day'; // 获取月数据 var getMonthData = function getMonthData(curData, monthNum, type) { var i = 0; var date = curData; var monthData = monthsData; do { var y = parseInt(date[0], 10); var m = parseInt(date[1], 10); var days = (0, _to_consumable_array._)((0, _date.getPreMonthDates)('prev', y, m, firstDayOfWeek)).concat((0, _to_consumable_array._)((0, _date.getDaysStatus)('active', y, m))); var cssHeight = 39 + (days.length > 35 ? 384 : 320); var scrollTop = 0; if (monthData.length > 0) { var monthEle = monthData[monthData.length - 1]; scrollTop = monthEle.scrollTop + monthEle.cssHeight; } var monthInfo = { curData: date, title: monthTitle(y, m), monthData: days, cssHeight: cssHeight, scrollTop: scrollTop }; if (type === 'next') { if (!endDates || !_date.Utils.compareDate("".concat(endDates[0], "/").concat(endDates[1], "/").concat(_date.Utils.getMonthDays(endDates[0], endDates[1])), "".concat(curData[0], "/").concat(curData[1], "/").concat(curData[2]))) { monthData.push(monthInfo); } } else if (!startDates || !_date.Utils.compareDate("".concat(curData[0], "/").concat(curData[1], "/").concat(curData[2]), "".concat(startDates[0], "/").concat(startDates[1], "/01"))) { monthData.unshift(monthInfo); } date = (0, _date.getCurrMonthData)('next', y, m); }while (i++ < monthNum); setMonthsData(monthData); }; var setReachedYearMonthInfo = function setReachedYearMonthInfo(current) { var currentMonthsData = monthsData[current]; var _currentMonthsData_curData = (0, _sliced_to_array._)(currentMonthsData.curData, 2), year = _currentMonthsData_curData[0], month = _currentMonthsData_curData[1]; if (currentMonthsData.title === yearMonthTitle) return; onPageChange && onPageChange([ year, month, "".concat(year, "-").concat(month) ]); setYearMonthTitle(currentMonthsData.title); }; // 设置默认的范围 var setDefaultRange = function setDefaultRange(monthNum, current) { var start = 0; var end = 0; if (monthNum >= 3) { if (current > 0 && current < monthNum) { start = current - 1; end = current + 3; } else if (current === 0) { start = current; end = current + 4; } else if (current === monthNum) { start = current - 2; end = current + 2; } } else { start = 0; end = monthNum + 2; } setMonthDefaultRange([ start, end ]); setTranslateY(monthsData[start].scrollTop); setReachedYearMonthInfo(current); }; var getMonthNum = function getMonthNum() { var monthNum = Number(endDates[1]) - Number(startDates[1]); var yearNum = Number(endDates[0]) - Number(startDates[0]); if (yearNum > 0) { monthNum += 12 * yearNum; } if (monthNum <= 0) { monthNum = 1; } setMonthsNum(monthNum); return monthNum; }; var setDefaultDate = function setDefaultDate() { var defaultData = []; // 日期转化为数组,限制初始日期。判断时间范围 if (type === 'range' && Array.isArray(currentDate)) { if (currentDate.length > 0) { if (propStartDate && _date.Utils.compareDate(currentDate[0], propStartDate)) { currentDate.splice(0, 1, propStartDate); } if (propEndDate && _date.Utils.compareDate(propEndDate, currentDate[1])) { currentDate.splice(1, 1, propEndDate); } defaultData = (0, _to_consumable_array._)((0, _utils.splitDate)(currentDate[0])).concat((0, _to_consumable_array._)((0, _utils.splitDate)(currentDate[1]))); } } else if (type === 'multiple' && Array.isArray(currentDate)) { if (currentDate.length > 0) { var _currentDate; var defaultArr = []; var obj = {}; currentDate.forEach(function(item) { if (propStartDate && !_date.Utils.compareDate(item, propStartDate) && propEndDate && !_date.Utils.compareDate(propEndDate, item)) { if (!Object.hasOwnProperty.call(obj, item)) { defaultArr.push(item); obj[item] = item; } } }); currentDate.splice(0) && (_currentDate = currentDate).push.apply(_currentDate, (0, _to_consumable_array._)(defaultArr)); defaultData = (0, _to_consumable_array._)((0, _utils.splitDate)(defaultArr[0])); } } else if (type === 'week' && Array.isArray(currentDate)) { if (currentDate.length > 0) { var _currentDate1; var _splitDate = (0, _sliced_to_array._)((0, _utils.splitDate)(currentDate[0]), 3), y = _splitDate[0], m = _splitDate[1], d = _splitDate[2]; var weekArr = _date.Utils.getWeekDate(y, m, d, firstDayOfWeek); currentDate.splice(0) && (_currentDate1 = currentDate).push.apply(_currentDate1, (0, _to_consumable_array._)(weekArr)); if (propStartDate && _date.Utils.compareDate(currentDate[0], propStartDate)) { currentDate.splice(0, 1, propStartDate); } if (propEndDate && _date.Utils.compareDate(propEndDate, currentDate[1])) { currentDate.splice(1, 1, propEndDate); } defaultData = (0, _to_consumable_array._)((0, _utils.splitDate)(currentDate[0])).concat((0, _to_consumable_array._)((0, _utils.splitDate)(currentDate[1]))); } } else if (currentDate) { if (currentDate.length > 0) { if (propStartDate && _date.Utils.compareDate(currentDate, propStartDate)) { defaultData = (0, _to_consumable_array._)((0, _utils.splitDate)(propStartDate)); } else if (propEndDate && !_date.Utils.compareDate(currentDate, propEndDate)) { defaultData = (0, _to_consumable_array._)((0, _utils.splitDate)(propEndDate)); } else { defaultData = (0, _to_consumable_array._)((0, _utils.splitDate)(currentDate)); } } else { defaultData = []; } } return defaultData; }; var getCurrentIndex = function getCurrentIndex(defaultData) { // 设置默认可见区域 var current = 0; var lastCurrent = 0; if (defaultData.length > 0) { monthsData.forEach(function(item, index) { if (item.title === monthTitle(defaultData[0], defaultData[1])) { current = index; } if (type === 'range' || type === 'week') { if (item.title === monthTitle(defaultData[3], defaultData[4])) { lastCurrent = index; } } }); } else { // 当 defaultValue 为空时,如果月份列表包含当月,则默认定位到当月 var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var index = monthsData.findIndex(function(item) { return +item.curData[0] === year && +item.curData[1] === month; }); if (index > -1) { current = index; } } return { current: current, lastCurrent: lastCurrent }; }; var renderCurrentDate = function renderCurrentDate() { var defaultData = setDefaultDate(); var current = getCurrentIndex(defaultData); if (defaultData.length > 0) { // 设置当前选中日期 if (type === 'range') { chooseDay({ day: defaultData[2], type: 'active' }, monthsData[current.current], true); chooseDay({ day: defaultData[5], type: 'active' }, monthsData[current.lastCurrent], true); } else if (type === 'week') { chooseDay({ day: defaultData[2], type: 'curr' }, monthsData[current.current], true); } else if (type === 'multiple') { ; (0, _to_consumable_array._)(currentDate).forEach(function(item) { var dateArr = (0, _utils.splitDate)(item); var currentIndex = current.current; monthsData.forEach(function(item, index) { if (item.title === monthTitle(dateArr[0], dateArr[1])) { currentIndex = index; } }); chooseDay({ day: dateArr[2], type: 'active' }, monthsData[currentIndex], true); }); } else { chooseDay({ day: defaultData[2], type: 'active' }, monthsData[current.current], true); } } return current.current; }; var requestAniFrameFunc = function requestAniFrameFunc(current, monthNum) { var lastItem = monthsData[monthsData.length - 1]; var containerHeight = lastItem.cssHeight + lastItem.scrollTop; (0, _raf.default)(function() { // 初始化 日历位置 if (monthsRef && monthsPanel && viewAreaRef) { viewHeight = getMonthsRef().clientHeight; getMonthsPanel().style.height = "".concat(containerHeight, "px"); getMonthsRef().scrollTop = monthsData[current].scrollTop; } }); setAvgHeight(Math.floor(containerHeight / (monthNum + 1))); }; var initData = function initData() { // 判断时间范围内存在多少个月 var monthNum = getMonthNum(); // 设置月份数据,获取包含月份的所有数据,只需要 set 一次即可。 getMonthData(startDates, monthNum, 'next'); var current = renderCurrentDate(); setDefaultRange(monthNum, current); requestAniFrameFunc(current, monthNum); }; (0, _react.useEffect)(function() { initData(); }, []); var resetRender = function resetRender() { state.currDateArray.splice(0); monthsData.splice(0); initData(); }; (0, _react.useEffect)(function() { setCurrentDate(resetDefaultValue() || []); }, [ defaultValue ]); (0, _react.useEffect)(function() { popup && resetRender(); }, [ currentDate ]); // 暴露出的API var scrollToDate = function scrollToDate(date) { if (_date.Utils.compareDate(date, propStartDate)) { date = propStartDate; } else if (!_date.Utils.compareDate(date, propEndDate)) { date = propEndDate; } var dateArr = (0, _utils.splitDate)(date); monthsData.forEach(function(item, index) { if (item.title === monthTitle(dateArr[0], dateArr[1])) { var currTop = monthsData[index].scrollTop; if (monthsRef.current) { var distance = currTop - monthsRef.current.scrollTop; if (scrollAnimation) { var flag = 0; var interval = setInterval(function() { flag++; if (monthsRef.current) { var offset = distance / 10; monthsRef.current.scrollTop += offset; } if (flag >= 10) { clearInterval(interval); if (monthsRef.current) { monthsRef.current.scrollTop = currTop; } } }, 40); } else { monthsRef.current.scrollTop = currTop; } } } }); }; var monthsViewScroll = function monthsViewScroll(e) { if (monthsData.length <= 1) { return; } var scrollTop = e.target.scrollTop; var current = Math.floor(scrollTop / avgHeight); if (current < 0) return; if (!monthsData[current + 1]) return; var nextTop = monthsData[current + 1].scrollTop; var nextHeight = monthsData[current + 1].cssHeight; if (current === 0) { if (scrollTop >= nextTop) { current += 1; } } else if (current > 0 && current < monthsNum - 1) { if (scrollTop >= nextTop) { current += 1; } if (scrollTop < monthsData[current].scrollTop) { current -= 1; } } else { var viewPosition = Math.round(scrollTop + viewHeight); if (current + 1 <= monthsNum && viewPosition >= nextTop + nextHeight) { current += 1; } if (current >= 1 && scrollTop < monthsData[current - 1].scrollTop) { current -= 1; } } setDefaultRange(monthsNum, current); }; _react.default.useImperativeHandle(ref, function() { return { scrollToDate: scrollToDate }; }); var getClasses = function getClasses(day, month) { var dateStr = (0, _utils.getCurrDate)(day, month); if (day.type === 'active') { if (propStartDate && _date.Utils.compareDate(dateStr, propStartDate) || propEndDate && _date.Utils.compareDate(propEndDate, dateStr)) { return "".concat(dayPrefix, "-disabled"); } if (type === 'range' || type === 'week') { if ((0, _utils.isStart)(dateStr, currentDate) || (0, _utils.isEnd)(dateStr, currentDate)) { return "".concat(dayPrefix, "-active ").concat((0, _utils.isStart)(dateStr, currentDate) ? 'active-start' : '', " ").concat((0, _utils.isEnd)(dateStr, currentDate) ? 'active-end' : ''); } if (Array.isArray(currentDate) && Object.values(currentDate).length === 2 && _date.Utils.compareDate(currentDate[0], dateStr) && _date.Utils.compareDate(dateStr, currentDate[1])) { if (disableDate(day)) { return "".concat(dayPrefix, "-choose-disabled"); } return "".concat(dayPrefix, "-choose"); } } else if (type === 'multiple' && (0, _utils.isMultiple)(dateStr, currentDate) || !Array.isArray(currentDate) && _date.Utils.isEqual(currentDate, dateStr)) { return "".concat(dayPrefix, "-active"); } if (disableDate(day)) { return "".concat(dayPrefix, "-disabled"); } return null; } return "".concat(dayPrefix, "-disabled"); }; var chooseDay = function chooseDay(day, month, isFirst) { if (getClasses(day, month) === "".concat(dayPrefix, "-disabled")) { return; } var days = (0, _to_consumable_array._)(month.curData); var _month_curData = (0, _sliced_to_array._)(month.curData, 2), y = _month_curData[0], m = _month_curData[1]; days[2] = typeof day.day === 'number' ? _date.Utils.getNumTwoBit(day.day) : day.day; days[3] = "".concat(days[0], "/").concat(days[1], "/").concat(days[2]); days[4] = _date.Utils.getWhatDay(+days[0], +days[1], +days[2]); if (type === 'multiple') { if (currentDate.length > 0) { var hasIndex = ''; currentDate.forEach(function(item, index) { if (item === days[3]) { hasIndex = index; } }); if (isFirst) { state.currDateArray.push((0, _to_consumable_array._)(days)); } else if (hasIndex !== '') { ; currentDate.splice(hasIndex, 1); state.currDateArray.splice(hasIndex, 1); } else { ; currentDate.push(days[3]); state.currDateArray.push((0, _to_consumable_array._)(days)); } } else { ; currentDate.push(days[3]); state.currDateArray = [ (0, _to_consumable_array._)(days) ]; } } else if (type === 'range') { var curDataLength = Object.values(currentDate).length; if (curDataLength === 2 || curDataLength === 0) { Array.isArray(currentDate) && currentDate.splice(0) && currentDate.push(days[3]); state.currDateArray = [ (0, _to_consumable_array._)(days) ]; } else if (_date.Utils.compareDate(currentDate[0], days[3])) { Array.isArray(currentDate) && currentDate.push(days[3]); state.currDateArray = (0, _to_consumable_array._)(state.currDateArray).concat([ (0, _to_consumable_array._)(days) ]); } else { Array.isArray(currentDate) && currentDate.unshift(days[3]); state.currDateArray = [ (0, _to_consumable_array._)(days) ].concat((0, _to_consumable_array._)(state.currDateArray)); } } else if (type === 'week') { var _currentDate; var weekArr = _date.Utils.getWeekDate(y, m, "".concat(day.day), firstDayOfWeek); if (propStartDate && _date.Utils.compareDate(weekArr[0], propStartDate)) { weekArr.splice(0, 1, propStartDate); } if (propEndDate && _date.Utils.compareDate(propEndDate, weekArr[1])) { weekArr.splice(1, 1, propEndDate); } Array.isArray(currentDate) && currentDate.splice(0) && (_currentDate = currentDate).push.apply(_currentDate, (0, _to_consumable_array._)(weekArr)); state.currDateArray = [ _date.Utils.formatResultDate(weekArr[0]), _date.Utils.formatResultDate(weekArr[1]) ]; } else { setCurrentDate(days[3]); state.currDateArray = (0, _to_consumable_array._)(days); } if (!isFirst) { onDayClick && onDayClick(state.currDateArray); if (autoBackfill || !popup) { confirm(); } } setMonthsData(monthsData.slice()); }; var resetSelectedValue = function resetSelectedValue() { var itemData = function itemData(dateArr) { days = dateArr.split('/'); days[3] = "".concat(days[0], "/").concat(days[1], "/").concat(days[2]); days[4] = _date.Utils.getWhatDay(+days[0], +days[1], +days[2]); return days; }; var days = []; if (Array.isArray(currentDate) && currentDate) { days = currentDate.map(function(item) { return itemData(item); }); } else { days = itemData(currentDate); } return days; }; var confirm = function confirm() { if (type === 'range' && state.currDateArray.length === 2 || type !== 'range') { var chooseData = state.currDateArray.slice(0); onConfirm && onConfirm(chooseData); if (popup) { onUpdate && onUpdate(); } } }; var _obj; var classes = (0, _classnames.default)((_obj = {}, (0, _define_property._)(_obj, "".concat(classPrefix, "-title"), !popup), (0, _define_property._)(_obj, "".concat(classPrefix, "-nofooter"), !!autoBackfill), _obj), classPrefix, className); var _obj1; var headerClasses = (0, _classnames.default)((_obj1 = {}, (0, _define_property._)(_obj1, "".concat(classPrefix, "-header"), true), (0, _define_property._)(_obj1, "".concat(classPrefix, "-header-title"), !popup), _obj1)); // 是否有开始提示 var isStartTip = function isStartTip(day, month) { return (type === 'range' || type === 'week') && day.type === 'active' && (0, _utils.isStart)((0, _utils.getCurrDate)(day, month), currentDate); }; // 是否有结束提示 var isEndTip = function isEndTip(day, month) { return currentDate.length >= 2 && (type === 'range' || type === 'week') && day.type === 'active' && (0, _utils.isEnd)((0, _utils.getCurrDate)(day, month), currentDate); }; var renderHeader = function renderHeader() { return /*#__PURE__*/ _react.default.createElement("div", { className: headerClasses }, showTitle && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-title") }, title || locale.calendaritem.title), renderHeaderButtons && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-header-buttons") }, renderHeaderButtons()), showSubTitle && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-sub-title") }, yearMonthTitle), /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-weeks"), ref: weeksPanel }, weeks.map(function(item) { return /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-week-item"), key: item }, item); }))); }; var renderContent = function renderContent() { return /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-content"), onScroll: monthsViewScroll, ref: monthsRef }, /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-pannel"), ref: monthsPanel }, /*#__PURE__*/ _react.default.createElement("div", { className: "viewArea", ref: viewAreaRef, style: { transform: "translateY(".concat(translateY, "px)") } }, monthsData.slice(monthDefaultRange[0], monthDefaultRange[1]).map(function(month, key) { return /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-month"), key: key }, /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-month-title") }, month.title), /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-days") }, month.monthData.map(function(day, i) { return /*#__PURE__*/ _react.default.createElement("div", { className: [ "".concat(classPrefix, "-day"), getClasses(day, month) ].join(' '), onClick: function onClick() { chooseDay(day, month); }, key: i }, /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-day-day") }, renderDay ? renderDay(day) : day.day), !isStartTip(day, month) && renderDayTop && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-day-info-top") }, renderDayTop(day)), !isStartTip(day, month) && !isEndTip(day, month) && renderDayBottom && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-day-info-bottom") }, renderDayBottom(day)), !isStartTip(day, month) && !isEndTip(day, month) && !renderDayBottom && showToday && (0, _utils.isCurrDay)(month, day.day) && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-day-info-curr") }, locale.calendaritem.today), isStartTip(day, month) && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-day-info ").concat((0, _utils.isStartAndEnd)(currentDate) ? "".concat(classPrefix, "-day-info-top") : '') }, startText || locale.calendaritem.start), isEndTip(day, month) && /*#__PURE__*/ _react.default.createElement("div", { className: "".concat(classPrefix, "-day-info") }, endText || locale.calendaritem.end)); }))); })))); }; var renderFooter = function renderFooter() { return /*#__PURE__*/ _react.default.createElement("div", { className: "nut-calendar-footer" }, children, /*#__PURE__*/ _react.default.createElement("div", { onClick: confirm }, renderBottomButton ? renderBottomButton() : /*#__PURE__*/ _react.default.createElement("div", { className: "calendar-confirm-btn" }, confirmText || locale.confirm))); }; return /*#__PURE__*/ _react.default.createElement("div", { className: classes, style: style }, renderHeader(), renderContent(), popup && !autoBackfill ? renderFooter() : ''); }); CalendarItem.displayName = 'NutCalendarItem';