UNPKG

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