UNPKG

5.44 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _extends2 = require('babel-runtime/helpers/extends');
6
7var _extends3 = _interopRequireDefault(_extends2);
8
9var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
10
11var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
12
13var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
14
15var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
16
17var _inherits2 = require('babel-runtime/helpers/inherits');
18
19var _inherits3 = _interopRequireDefault(_inherits2);
20
21var _react = require('react');
22
23var _react2 = _interopRequireDefault(_react);
24
25var _propTypes = require('prop-types');
26
27var _propTypes2 = _interopRequireDefault(_propTypes);
28
29var _KeyCode = require('rc-util/lib/KeyCode');
30
31var _KeyCode2 = _interopRequireDefault(_KeyCode);
32
33var _CalendarHeader = require('./calendar/CalendarHeader');
34
35var _CalendarHeader2 = _interopRequireDefault(_CalendarHeader);
36
37var _CalendarFooter = require('./calendar/CalendarFooter');
38
39var _CalendarFooter2 = _interopRequireDefault(_CalendarFooter);
40
41var _CalendarMixin = require('./mixin/CalendarMixin');
42
43var _CommonMixin = require('./mixin/CommonMixin');
44
45var _moment = require('moment');
46
47var _moment2 = _interopRequireDefault(_moment);
48
49function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
50
51var MonthCalendar = function (_React$Component) {
52 (0, _inherits3['default'])(MonthCalendar, _React$Component);
53
54 function MonthCalendar(props) {
55 (0, _classCallCheck3['default'])(this, MonthCalendar);
56
57 var _this = (0, _possibleConstructorReturn3['default'])(this, _React$Component.call(this, props));
58
59 _this.onKeyDown = function (event) {
60 var keyCode = event.keyCode;
61 var ctrlKey = event.ctrlKey || event.metaKey;
62 var stateValue = _this.state.value;
63 var disabledDate = _this.props.disabledDate;
64
65 var value = stateValue;
66 switch (keyCode) {
67 case _KeyCode2['default'].DOWN:
68 value = stateValue.clone();
69 value.add(3, 'months');
70 break;
71 case _KeyCode2['default'].UP:
72 value = stateValue.clone();
73 value.add(-3, 'months');
74 break;
75 case _KeyCode2['default'].LEFT:
76 value = stateValue.clone();
77 if (ctrlKey) {
78 value.add(-1, 'years');
79 } else {
80 value.add(-1, 'months');
81 }
82 break;
83 case _KeyCode2['default'].RIGHT:
84 value = stateValue.clone();
85 if (ctrlKey) {
86 value.add(1, 'years');
87 } else {
88 value.add(1, 'months');
89 }
90 break;
91 case _KeyCode2['default'].ENTER:
92 if (!disabledDate || !disabledDate(stateValue)) {
93 _this.onSelect(stateValue);
94 }
95 event.preventDefault();
96 return 1;
97 default:
98 return undefined;
99 }
100 if (value !== stateValue) {
101 _this.setValue(value);
102 event.preventDefault();
103 return 1;
104 }
105 };
106
107 _this.handlePanelChange = function (_, mode) {
108 if (mode !== 'date') {
109 _this.setState({ mode: mode });
110 }
111 };
112
113 _this.state = {
114 mode: 'month',
115 value: props.value || props.defaultValue || (0, _moment2['default'])(),
116 selectedValue: props.selectedValue || props.defaultSelectedValue
117 };
118 return _this;
119 }
120
121 MonthCalendar.prototype.render = function render() {
122 var props = this.props,
123 state = this.state;
124 var mode = state.mode,
125 value = state.value;
126
127 var children = _react2['default'].createElement(
128 'div',
129 { className: props.prefixCls + '-month-calendar-content' },
130 _react2['default'].createElement(
131 'div',
132 { className: props.prefixCls + '-month-header-wrap' },
133 _react2['default'].createElement(_CalendarHeader2['default'], {
134 prefixCls: props.prefixCls,
135 mode: mode,
136 value: value,
137 locale: props.locale,
138 disabledMonth: props.disabledDate,
139 monthCellRender: props.monthCellRender,
140 monthCellContentRender: props.monthCellContentRender,
141 onMonthSelect: this.onSelect,
142 onValueChange: this.setValue,
143 onPanelChange: this.handlePanelChange
144 })
145 ),
146 _react2['default'].createElement(_CalendarFooter2['default'], {
147 prefixCls: props.prefixCls,
148 renderFooter: props.renderFooter
149 })
150 );
151 return this.renderRoot({
152 className: props.prefixCls + '-month-calendar',
153 children: children
154 });
155 };
156
157 return MonthCalendar;
158}(_react2['default'].Component);
159
160MonthCalendar.propTypes = (0, _extends3['default'])({}, _CalendarMixin.calendarMixinPropTypes, _CommonMixin.propType, {
161 monthCellRender: _propTypes2['default'].func,
162 dateCellRender: _propTypes2['default'].func,
163 value: _propTypes2['default'].object,
164 defaultValue: _propTypes2['default'].object,
165 selectedValue: _propTypes2['default'].object,
166 defaultSelectedValue: _propTypes2['default'].object,
167 disabledDate: _propTypes2['default'].func
168});
169MonthCalendar.defaultProps = (0, _extends3['default'])({}, _CommonMixin.defaultProp, _CalendarMixin.calendarMixinDefaultProps);
170exports['default'] = (0, _CalendarMixin.calendarMixinWrapper)((0, _CommonMixin.commonMixinWrapper)(MonthCalendar));
171module.exports = exports['default'];
\No newline at end of file