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