1 | import _extends from 'babel-runtime/helpers/extends';
|
2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
3 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
4 | import _inherits from 'babel-runtime/helpers/inherits';
|
5 | import React from 'react';
|
6 | import PropTypes from 'prop-types';
|
7 | import KeyCode from 'rc-util/es/KeyCode';
|
8 | import CalendarHeader from './calendar/CalendarHeader';
|
9 | import CalendarFooter from './calendar/CalendarFooter';
|
10 | import { calendarMixinWrapper, calendarMixinPropTypes, calendarMixinDefaultProps } from './mixin/CalendarMixin';
|
11 | import { commonMixinWrapper, propType, defaultProp } from './mixin/CommonMixin';
|
12 | import moment from 'moment';
|
13 |
|
14 | var MonthCalendar = function (_React$Component) {
|
15 | _inherits(MonthCalendar, _React$Component);
|
16 |
|
17 | function MonthCalendar(props) {
|
18 | _classCallCheck(this, MonthCalendar);
|
19 |
|
20 | var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
|
21 |
|
22 | _this.onKeyDown = function (event) {
|
23 | var keyCode = event.keyCode;
|
24 | var ctrlKey = event.ctrlKey || event.metaKey;
|
25 | var stateValue = _this.state.value;
|
26 | var disabledDate = _this.props.disabledDate;
|
27 |
|
28 | var value = stateValue;
|
29 | switch (keyCode) {
|
30 | case KeyCode.DOWN:
|
31 | value = stateValue.clone();
|
32 | value.add(3, 'months');
|
33 | break;
|
34 | case KeyCode.UP:
|
35 | value = stateValue.clone();
|
36 | value.add(-3, 'months');
|
37 | break;
|
38 | case KeyCode.LEFT:
|
39 | value = stateValue.clone();
|
40 | if (ctrlKey) {
|
41 | value.add(-1, 'years');
|
42 | } else {
|
43 | value.add(-1, 'months');
|
44 | }
|
45 | break;
|
46 | case KeyCode.RIGHT:
|
47 | value = stateValue.clone();
|
48 | if (ctrlKey) {
|
49 | value.add(1, 'years');
|
50 | } else {
|
51 | value.add(1, 'months');
|
52 | }
|
53 | break;
|
54 | case KeyCode.ENTER:
|
55 | if (!disabledDate || !disabledDate(stateValue)) {
|
56 | _this.onSelect(stateValue);
|
57 | }
|
58 | event.preventDefault();
|
59 | return 1;
|
60 | default:
|
61 | return undefined;
|
62 | }
|
63 | if (value !== stateValue) {
|
64 | _this.setValue(value);
|
65 | event.preventDefault();
|
66 | return 1;
|
67 | }
|
68 | };
|
69 |
|
70 | _this.handlePanelChange = function (_, mode) {
|
71 | if (mode !== 'date') {
|
72 | _this.setState({ mode: mode });
|
73 | }
|
74 | };
|
75 |
|
76 | _this.state = {
|
77 | mode: 'month',
|
78 | value: props.value || props.defaultValue || moment(),
|
79 | selectedValue: props.selectedValue || props.defaultSelectedValue
|
80 | };
|
81 | return _this;
|
82 | }
|
83 |
|
84 | MonthCalendar.prototype.render = function render() {
|
85 | var props = this.props,
|
86 | state = this.state;
|
87 | var mode = state.mode,
|
88 | value = state.value;
|
89 |
|
90 | var children = React.createElement(
|
91 | 'div',
|
92 | { className: props.prefixCls + '-month-calendar-content' },
|
93 | React.createElement(
|
94 | 'div',
|
95 | { className: props.prefixCls + '-month-header-wrap' },
|
96 | React.createElement(CalendarHeader, {
|
97 | prefixCls: props.prefixCls,
|
98 | mode: mode,
|
99 | value: value,
|
100 | locale: props.locale,
|
101 | disabledMonth: props.disabledDate,
|
102 | monthCellRender: props.monthCellRender,
|
103 | monthCellContentRender: props.monthCellContentRender,
|
104 | onMonthSelect: this.onSelect,
|
105 | onValueChange: this.setValue,
|
106 | onPanelChange: this.handlePanelChange
|
107 | })
|
108 | ),
|
109 | React.createElement(CalendarFooter, {
|
110 | prefixCls: props.prefixCls,
|
111 | renderFooter: props.renderFooter
|
112 | })
|
113 | );
|
114 | return this.renderRoot({
|
115 | className: props.prefixCls + '-month-calendar',
|
116 | children: children
|
117 | });
|
118 | };
|
119 |
|
120 | return MonthCalendar;
|
121 | }(React.Component);
|
122 |
|
123 | MonthCalendar.propTypes = _extends({}, calendarMixinPropTypes, propType, {
|
124 | monthCellRender: PropTypes.func,
|
125 | dateCellRender: PropTypes.func,
|
126 | value: PropTypes.object,
|
127 | defaultValue: PropTypes.object,
|
128 | selectedValue: PropTypes.object,
|
129 | defaultSelectedValue: PropTypes.object,
|
130 | disabledDate: PropTypes.func
|
131 | });
|
132 | MonthCalendar.defaultProps = _extends({}, defaultProp, calendarMixinDefaultProps);
|
133 |
|
134 |
|
135 | export default calendarMixinWrapper(commonMixinWrapper(MonthCalendar)); |
\ | No newline at end of file |