@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
127 lines (126 loc) • 5.92 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "Calendar", {
enumerable: true,
get: function() {
return Calendar;
}
});
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
var _object_spread = require("@swc/helpers/_/_object_spread");
var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
var _popup = /*#__PURE__*/ _interop_require_default._(require("../popup"));
var _calendaritem = /*#__PURE__*/ _interop_require_default._(require("../calendaritem"));
var _date = require("../../utils/date");
var _configprovider = require("../configprovider");
var _typings = require("../../utils/typings");
var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
type: 'single',
autoBackfill: false,
popup: true,
visible: false,
title: '',
defaultValue: '',
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,
onClose: function onClose() {},
onConfirm: function onConfirm(param) {},
onDayClick: function onDayClick(data) {},
onPageChange: function onPageChange(param) {}
});
var Calendar = /*#__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, visible = _$_object_spread.visible, 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, closeIcon = _$_object_spread.closeIcon, disableDate = _$_object_spread.disableDate, renderHeaderButtons = _$_object_spread.renderHeaderButtons, renderBottomButton = _$_object_spread.renderBottomButton, renderDay = _$_object_spread.renderDay, renderDayTop = _$_object_spread.renderDayTop, renderDayBottom = _$_object_spread.renderDayBottom, onClose = _$_object_spread.onClose, onConfirm = _$_object_spread.onConfirm, onDayClick = _$_object_spread.onDayClick, onPageChange = _$_object_spread.onPageChange;
var calendarRef = (0, _react.useRef)(null);
var close = function close() {
onClose && onClose();
};
var choose = function choose(param) {
close();
onConfirm && onConfirm(param);
};
var closePopup = function closePopup() {
close();
};
var select = function select(param) {
onDayClick && onDayClick(param);
};
var scrollToDate = function scrollToDate(date) {
var _calendarRef_current;
(_calendarRef_current = calendarRef.current) === null || _calendarRef_current === void 0 ? void 0 : _calendarRef_current.scrollToDate(date);
};
var yearMonthChange = function yearMonthChange(param) {
onPageChange && onPageChange(param);
};
_react.default.useImperativeHandle(ref, function() {
return {
scrollToDate: scrollToDate
};
});
var renderItem = function renderItem() {
return /*#__PURE__*/ _react.default.createElement(_calendaritem.default, {
ref: calendarRef,
style: style,
className: className,
children: children,
type: type,
autoBackfill: autoBackfill,
renderBottomButton: renderBottomButton,
popup: popup,
title: title || locale.calendaritem.title,
defaultValue: defaultValue,
startDate: startDate,
endDate: endDate,
showToday: showToday,
startText: startText || locale.calendaritem.start,
endText: endText || locale.calendaritem.end,
confirmText: confirmText || locale.calendaritem.confirm,
showTitle: showTitle,
showSubTitle: showSubTitle,
scrollAnimation: scrollAnimation,
firstDayOfWeek: firstDayOfWeek,
disableDate: disableDate,
renderHeaderButtons: renderHeaderButtons,
renderDay: renderDay,
renderDayTop: renderDayTop,
renderDayBottom: renderDayBottom,
onConfirm: choose,
onDayClick: select,
onPageChange: yearMonthChange
});
};
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, popup ? /*#__PURE__*/ _react.default.createElement(_popup.default, {
className: "nut-calendar-popup",
visible: visible,
position: "bottom",
round: true,
closeable: true,
closeIcon: closeIcon,
destroyOnClose: true,
onOverlayClick: closePopup,
onCloseIconClick: closePopup,
style: {
height: '83%'
}
}, renderItem()) : renderItem());
});
Calendar.displayName = 'NutCalendar';