antd
Version:
An enterprise-class UI design language and React-based implementation
193 lines (159 loc) • 6.64 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _FullCalendar = require('rc-calendar/lib/FullCalendar');
var _FullCalendar2 = _interopRequireDefault(_FullCalendar);
var _Constants = require('./Constants');
var _Header = require('./Header');
var _Header2 = _interopRequireDefault(_Header);
var _getLocale = require('../_util/getLocale');
var _getLocale2 = _interopRequireDefault(_getLocale);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function noop() {
return null;
}
function zerofixed(v) {
if (v < 10) {
return '0' + v;
}
return '' + v;
}
var Calendar = function (_React$Component) {
(0, _inherits3["default"])(Calendar, _React$Component);
function Calendar(props) {
(0, _classCallCheck3["default"])(this, Calendar);
var _this = (0, _possibleConstructorReturn3["default"])(this, _React$Component.call(this, props));
_this.monthCellRender = function (value) {
var _this$props = _this.props,
prefixCls = _this$props.prefixCls,
_this$props$monthCell = _this$props.monthCellRender,
monthCellRender = _this$props$monthCell === undefined ? noop : _this$props$monthCell;
return _react2["default"].createElement(
'div',
{ className: prefixCls + '-month' },
_react2["default"].createElement(
'div',
{ className: prefixCls + '-value' },
value.localeData().monthsShort(value)
),
_react2["default"].createElement(
'div',
{ className: prefixCls + '-content' },
monthCellRender(value)
)
);
};
_this.dateCellRender = function (value) {
var _this$props2 = _this.props,
prefixCls = _this$props2.prefixCls,
_this$props2$dateCell = _this$props2.dateCellRender,
dateCellRender = _this$props2$dateCell === undefined ? noop : _this$props2$dateCell;
return _react2["default"].createElement(
'div',
{ className: prefixCls + '-date' },
_react2["default"].createElement(
'div',
{ className: prefixCls + '-value' },
zerofixed(value.date())
),
_react2["default"].createElement(
'div',
{ className: prefixCls + '-content' },
dateCellRender(value)
)
);
};
_this.setValue = function (value) {
if (!('value' in _this.props) && _this.state.value !== value) {
_this.setState({ value: value });
}
var onPanelChange = _this.props.onPanelChange;
if (onPanelChange) {
onPanelChange(value, _this.state.mode);
}
};
_this.setType = function (type) {
var mode = type === 'date' ? 'month' : 'year';
if (_this.state.mode !== mode) {
_this.setState({ mode: mode });
var onPanelChange = _this.props.onPanelChange;
if (onPanelChange) {
onPanelChange(_this.state.value, mode);
}
}
};
_this.state = {
value: props.value || props.defaultValue || (0, _moment2["default"])(),
mode: props.mode
};
return _this;
}
Calendar.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
if ('value' in nextProps) {
this.setState({
value: nextProps.value
});
}
};
Calendar.prototype.render = function render() {
var props = this.props;
var _state = this.state,
value = _state.value,
mode = _state.mode;
var prefixCls = props.prefixCls,
style = props.style,
className = props.className,
fullscreen = props.fullscreen;
var type = mode === 'year' ? 'month' : 'date';
var locale = (0, _getLocale2["default"])(props, this.context, 'Calendar', function () {
return require('./locale/zh_CN');
});
var cls = className || '';
if (fullscreen) {
cls += ' ' + prefixCls + '-fullscreen';
}
return _react2["default"].createElement(
'div',
{ className: cls, style: style },
_react2["default"].createElement(_Header2["default"], { fullscreen: fullscreen, type: type, value: value, locale: locale.lang, prefixCls: prefixCls, onTypeChange: this.setType, onValueChange: this.setValue }),
_react2["default"].createElement(_FullCalendar2["default"], (0, _extends3["default"])({}, props, { Select: noop, locale: locale.lang, type: type, prefixCls: prefixCls, showHeader: false, value: value, monthCellRender: this.monthCellRender, dateCellRender: this.dateCellRender }))
);
};
return Calendar;
}(_react2["default"].Component);
exports["default"] = Calendar;
Calendar.defaultProps = {
locale: {},
fullscreen: true,
prefixCls: _Constants.PREFIX_CLS,
mode: 'month'
};
Calendar.propTypes = {
monthCellRender: _react.PropTypes.func,
dateCellRender: _react.PropTypes.func,
fullscreen: _react.PropTypes.bool,
locale: _react.PropTypes.object,
prefixCls: _react.PropTypes.string,
className: _react.PropTypes.string,
style: _react.PropTypes.object,
onPanelChange: _react.PropTypes.func,
value: _react.PropTypes.object
};
Calendar.contextTypes = {
antLocale: _react.PropTypes.object
};
module.exports = exports['default'];