UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

300 lines (236 loc) 9.07 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _react = _interopRequireWildcard(require("react")); var _moment = _interopRequireWildcard(require("moment")); var _noop = _interopRequireDefault(require("lodash/noop")); var _LocaleReceiver = _interopRequireDefault(require("../locale-provider/LocaleReceiver")); var _Header = _interopRequireDefault(require("./Header")); var _en_US = _interopRequireDefault(require("./locale/en_US")); var _FullCalendar = _interopRequireDefault(require("../rc-components/calendar/FullCalendar")); var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext")); function zerofixed(v) { if (v < 10) { return "0".concat(v); } return "".concat(v); } var Calendar = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(Calendar, _Component); var _super = (0, _createSuper2["default"])(Calendar); function Calendar(props) { var _this; (0, _classCallCheck2["default"])(this, Calendar); _this = _super.call(this, props); _this.monthCellRender = function (value) { var _this$props$monthCell = _this.props.monthCellRender, monthCellRender = _this$props$monthCell === void 0 ? _noop["default"] : _this$props$monthCell; var prefixCls = _this.getPrefixCls(); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-month") }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-value") }, value.localeData().monthsShort(value)), /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-content") }, monthCellRender(value))); }; _this.dateCellRender = function (value) { var _this$props$dateCellR = _this.props.dateCellRender, dateCellRender = _this$props$dateCellR === void 0 ? _noop["default"] : _this$props$dateCellR; var prefixCls = _this.getPrefixCls(); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-date") }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-value") }, zerofixed(value.date())), /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-content") }, dateCellRender(value))); }; _this.setValue = function (value, way) { if (!('value' in _this.props)) { _this.setState({ value: value }); } if (way === 'select') { var onSelect = _this.props.onSelect; if (onSelect) { onSelect(value); } } else if (way === 'changePanel') { var mode = _this.state.mode; _this.onPanelChange(value, mode); } }; _this.setType = function (type) { var mode = type === 'date' ? 'month' : 'year'; var _this$state = _this.state, stateMode = _this$state.mode, value = _this$state.value; if (stateMode !== mode) { _this.setState({ mode: mode }); _this.onPanelChange(value, mode); } }; _this.onHeaderValueChange = function (value) { _this.setValue(value, 'changePanel'); }; _this.onHeaderTypeChange = function (type) { _this.setType(type); }; _this.onSelect = function (value) { _this.setValue(value, 'select'); }; _this.getDateRange = function (validRange, disabledDate) { return function (current) { if (!current) { return false; } var _validRange = (0, _slicedToArray2["default"])(validRange, 2), startDate = _validRange[0], endDate = _validRange[1]; var inRange = !current.isBetween(startDate, endDate, 'days', '[]'); if (disabledDate) { return disabledDate(current) || inRange; } return inRange; }; }; _this.renderCalendar = function (locale, localeCode) { var _assertThisInitialize = (0, _assertThisInitialized2["default"])(_this), state = _assertThisInitialize.state, props = _assertThisInitialize.props; var value = state.value, mode = state.mode; if (value && localeCode) { value.locale(localeCode); } var style = props.style, className = props.className, fullscreen = props.fullscreen, dateFullCellRender = props.dateFullCellRender, monthFullCellRender = props.monthFullCellRender, headerRender = props.headerRender; var prefixCls = _this.getPrefixCls(); var type = mode === 'year' ? 'month' : 'date'; var cls = className || ''; if (fullscreen) { cls += " ".concat(prefixCls, "-fullscreen"); } var monthCellRender = monthFullCellRender || _this.monthCellRender; var dateCellRender = dateFullCellRender || _this.dateCellRender; var disabledDate = props.disabledDate; if (props.validRange) { disabledDate = _this.getDateRange(props.validRange, disabledDate); } return /*#__PURE__*/_react["default"].createElement("div", { className: cls, style: style }, headerRender ? headerRender({ value: value || (0, _moment["default"])(), type: type, onChange: _this.onHeaderValueChange, onTypeChange: _this.onHeaderTypeChange }) : /*#__PURE__*/_react["default"].createElement(_Header["default"], { fullscreen: fullscreen, type: type, value: value, locale: locale.lang, prefixCls: prefixCls, onTypeChange: _this.onHeaderTypeChange, onValueChange: _this.onHeaderValueChange, validRange: props.validRange, selectProps: props.selectProps, radioProps: props.radioProps }), /*#__PURE__*/_react["default"].createElement(_FullCalendar["default"], (0, _extends2["default"])({}, props, { disabledDate: disabledDate, Select: _noop["default"], locale: locale.lang, type: type, prefixCls: prefixCls, showHeader: false, value: value, monthCellRender: monthCellRender, dateCellRender: dateCellRender, onSelect: _this.onSelect }))); }; var value = props.value || props.defaultValue || (0, _moment["default"])(); if (!(0, _moment.isMoment)(value)) { throw new Error('The value/defaultValue of Calendar must be a moment object'); } _this.state = { value: value, mode: props.mode }; return _this; } (0, _createClass2["default"])(Calendar, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if ('value' in nextProps) { this.setState({ value: nextProps.value }); } var mode = this.props.mode; if ('mode' in nextProps && nextProps.mode !== mode) { this.setState({ mode: nextProps.mode }); } } }, { key: "getPrefixCls", value: function getPrefixCls() { var prefixCls = this.props.prefixCls; var getPrefixCls = this.context.getPrefixCls; return getPrefixCls('fullcalendar', prefixCls); } }, { key: "onPanelChange", value: function onPanelChange(value, mode) { var onPanelChange = this.props.onPanelChange; if (onPanelChange) { onPanelChange(value, mode); } } }, { key: "render", value: function render() { return /*#__PURE__*/_react["default"].createElement(_LocaleReceiver["default"], { componentName: "Calendar", defaultLocale: _en_US["default"] }, this.renderCalendar); } }], [{ key: "contextType", get: function get() { return _ConfigContext["default"]; } }]); return Calendar; }(_react.Component); exports["default"] = Calendar; Calendar.displayName = 'Calendar'; Calendar.defaultProps = { locale: {}, fullscreen: true, mode: 'month', onSelect: _noop["default"], onPanelChange: _noop["default"] }; //# sourceMappingURL=index.js.map