UNPKG

11.5 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.StateType = undefined;
7
8var _extends2 = require('babel-runtime/helpers/extends');
9
10var _extends3 = _interopRequireDefault(_extends2);
11
12var _createClass2 = require('babel-runtime/helpers/createClass');
13
14var _createClass3 = _interopRequireDefault(_createClass2);
15
16var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
17
18var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
19
20var _inherits2 = require('babel-runtime/helpers/inherits');
21
22var _inherits3 = _interopRequireDefault(_inherits2);
23
24var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
25
26var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
27
28var _react = require('react');
29
30var _react2 = _interopRequireDefault(_react);
31
32var _rcAnimate = require('rc-animate');
33
34var _rcAnimate2 = _interopRequireDefault(_rcAnimate);
35
36var _TimePicker = require('./TimePicker');
37
38var _TimePicker2 = _interopRequireDefault(_TimePicker);
39
40var _DatePicker = require('./DatePicker');
41
42var _DatePicker2 = _interopRequireDefault(_DatePicker);
43
44var _ConfirmPanel = require('./calendar/ConfirmPanel');
45
46var _ConfirmPanel2 = _interopRequireDefault(_ConfirmPanel);
47
48var _ShortcutPanel = require('./calendar/ShortcutPanel');
49
50var _ShortcutPanel2 = _interopRequireDefault(_ShortcutPanel);
51
52var _AnimateWrapper = require('./calendar/AnimateWrapper');
53
54var _AnimateWrapper2 = _interopRequireDefault(_AnimateWrapper);
55
56var _Header = require('./calendar/Header');
57
58var _Header2 = _interopRequireDefault(_Header);
59
60var _util = require('./util');
61
62var _zh_CN = require('./locale/zh_CN');
63
64var _zh_CN2 = _interopRequireDefault(_zh_CN);
65
66function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
67
68var StateType = exports.StateType = function StateType() {
69 (0, _classCallCheck3['default'])(this, StateType);
70
71 this.showTimePicker = false;
72 this.startDate = undefined;
73 this.endDate = undefined;
74 this.disConfirmBtn = true;
75 this.clientHight = 0;
76};
77
78var Calendar = function (_React$PureComponent) {
79 (0, _inherits3['default'])(Calendar, _React$PureComponent);
80
81 function Calendar(props) {
82 (0, _classCallCheck3['default'])(this, Calendar);
83
84 var _this = (0, _possibleConstructorReturn3['default'])(this, (Calendar.__proto__ || Object.getPrototypeOf(Calendar)).call(this, props));
85
86 _this.selectDate = function (date) {
87 var useDateTime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
88 var startDate = arguments[2];
89 var endDate = arguments[3];
90
91 if (!date) return {};
92 var newState = {};
93 var _this$props = _this.props,
94 type = _this$props.type,
95 pickTime = _this$props.pickTime,
96 defaultTimeValue = _this$props.defaultTimeValue,
97 _this$props$locale = _this$props.locale,
98 locale = _this$props$locale === undefined ? {} : _this$props$locale;
99
100 var newDate = pickTime && !useDateTime ? (0, _util.mergeDateTime)(date, defaultTimeValue) : date;
101 switch (type) {
102 case 'one':
103 newState = (0, _extends3['default'])({}, newState, { startDate: newDate, disConfirmBtn: false });
104 if (pickTime) {
105 newState = (0, _extends3['default'])({}, newState, { timePickerTitle: locale.selectTime, showTimePicker: true });
106 }
107 break;
108 case 'range':
109 if (!startDate || endDate) {
110 newState = (0, _extends3['default'])({}, newState, { startDate: newDate, endDate: undefined, disConfirmBtn: true });
111 if (pickTime) {
112 newState = (0, _extends3['default'])({}, newState, { timePickerTitle: locale.selectStartTime, showTimePicker: true });
113 }
114 } else {
115 newState = (0, _extends3['default'])({}, newState, { timePickerTitle: +newDate >= +startDate ? locale.selectEndTime : locale.selectStartTime, disConfirmBtn: false, endDate: pickTime && !useDateTime && +newDate >= +startDate ? new Date(+(0, _util.mergeDateTime)(newDate, startDate) + 3600000) : newDate });
116 }
117 break;
118 }
119 return newState;
120 };
121 _this.onSelectedDate = function (date) {
122 var _this$state = _this.state,
123 startDate = _this$state.startDate,
124 endDate = _this$state.endDate;
125
126 _this.setState(_this.selectDate(date, false, startDate, endDate));
127 };
128 _this.onSelectHasDisableDate = function (date) {
129 _this.onClear();
130 if (_this.props.onSelectHasDisableDate) {
131 _this.props.onSelectHasDisableDate(date);
132 }
133 };
134 _this.onClose = function () {
135 _this.setState(new StateType());
136 };
137 _this.onCancel = function () {
138 _this.onClose();
139 _this.props.onCancel && _this.props.onCancel();
140 };
141 _this.onConfirm = function () {
142 _this.onClose();
143 var onConfirm = _this.props.onConfirm;
144 var _this$state2 = _this.state,
145 startDate = _this$state2.startDate,
146 endDate = _this$state2.endDate;
147
148 if (startDate && endDate && +startDate > +endDate) {
149 return onConfirm && onConfirm(endDate, startDate);
150 }
151 onConfirm && onConfirm(startDate, endDate);
152 };
153 _this.onTimeChange = function (date) {
154 var _this$state3 = _this.state,
155 startDate = _this$state3.startDate,
156 endDate = _this$state3.endDate;
157
158 if (endDate) {
159 _this.setState({
160 endDate: date
161 });
162 } else if (startDate) {
163 _this.setState({
164 startDate: date
165 });
166 }
167 };
168 _this.onClear = function () {
169 _this.setState({
170 startDate: undefined,
171 endDate: undefined,
172 showTimePicker: false
173 });
174 };
175 _this.shortcutSelect = function (startDate, endDate) {
176 var state = _this.selectDate(startDate, true);
177 _this.setState((0, _extends3['default'])({}, state, _this.selectDate(endDate, true, state.startDate), { showTimePicker: false }));
178 };
179 _this.setClientHight = function (height) {
180 _this.setState({
181 clientHight: height
182 });
183 };
184 _this.state = new StateType();
185 return _this;
186 }
187
188 (0, _createClass3['default'])(Calendar, [{
189 key: 'render',
190 value: function render() {
191 var _props = this.props,
192 type = _props.type,
193 _props$locale = _props.locale,
194 locale = _props$locale === undefined ? {} : _props$locale,
195 prefixCls = _props.prefixCls,
196 visible = _props.visible,
197 pickTime = _props.pickTime,
198 showShortcut = _props.showShortcut,
199 renderHeader = _props.renderHeader,
200 infinite = _props.infinite,
201 infiniteOpt = _props.infiniteOpt,
202 initalMonths = _props.initalMonths,
203 defaultDate = _props.defaultDate,
204 minDate = _props.minDate,
205 maxDate = _props.maxDate,
206 getDateExtra = _props.getDateExtra,
207 rowSize = _props.rowSize,
208 defaultTimeValue = _props.defaultTimeValue,
209 renderShortcut = _props.renderShortcut,
210 enterDirection = _props.enterDirection,
211 timePickerPrefixCls = _props.timePickerPrefixCls,
212 timePickerPickerPrefixCls = _props.timePickerPickerPrefixCls,
213 style = _props.style;
214 var _state = this.state,
215 showTimePicker = _state.showTimePicker,
216 timePickerTitle = _state.timePickerTitle,
217 startDate = _state.startDate,
218 endDate = _state.endDate,
219 disConfirmBtn = _state.disConfirmBtn,
220 clientHight = _state.clientHight;
221
222 var headerProps = {
223 locale: locale,
224 showClear: !!startDate,
225 onCancel: this.onCancel,
226 onClear: this.onClear
227 };
228 return _react2['default'].createElement(
229 'div',
230 { className: '' + prefixCls, style: style },
231 _react2['default'].createElement(
232 _rcAnimate2['default'],
233 { showProp: 'visible', transitionName: 'fade' },
234 _react2['default'].createElement(_AnimateWrapper2['default'], { className: 'mask', visible: !!visible })
235 ),
236 _react2['default'].createElement(
237 _rcAnimate2['default'],
238 { showProp: 'visible', transitionName: enterDirection === 'horizontal' ? 'slideH' : 'slideV' },
239 _react2['default'].createElement(
240 _AnimateWrapper2['default'],
241 { className: 'content', visible: !!visible },
242 renderHeader ? renderHeader(headerProps) : _react2['default'].createElement(_Header2['default'], headerProps),
243 _react2['default'].createElement(_DatePicker2['default'], { locale: locale, type: type, prefixCls: prefixCls, infinite: infinite, infiniteOpt: infiniteOpt, initalMonths: initalMonths, defaultDate: defaultDate, minDate: minDate, maxDate: maxDate, getDateExtra: getDateExtra, onCellClick: this.onSelectedDate, onSelectHasDisableDate: this.onSelectHasDisableDate, onLayout: this.setClientHight, startDate: startDate, endDate: endDate, rowSize: rowSize }),
244 showTimePicker && _react2['default'].createElement(_TimePicker2['default'], { prefixCls: timePickerPrefixCls, pickerPrefixCls: timePickerPickerPrefixCls, locale: locale, title: timePickerTitle, defaultValue: defaultTimeValue, value: endDate ? endDate : startDate, onValueChange: this.onTimeChange, minDate: minDate, maxDate: maxDate, clientHeight: clientHight }),
245 showShortcut && !showTimePicker && (renderShortcut ? renderShortcut(this.shortcutSelect) : _react2['default'].createElement(_ShortcutPanel2['default'], { locale: locale, onSelect: this.shortcutSelect })),
246 startDate && _react2['default'].createElement(_ConfirmPanel2['default'], { type: type, locale: locale, startDateTime: startDate, endDateTime: endDate, onConfirm: this.onConfirm, disableBtn: disConfirmBtn, formatStr: pickTime ? locale.dateTimeFormat : locale.dateFormat })
247 )
248 )
249 );
250 }
251 }]);
252 return Calendar;
253}(_react2['default'].PureComponent);
254
255exports['default'] = Calendar;
256
257Calendar.DefaultHeader = _Header2['default'];
258Calendar.DefaultShortcut = _ShortcutPanel2['default'];
259Calendar.defaultProps = {
260 visible: false,
261 showHeader: true,
262 locale: _zh_CN2['default'],
263 pickTime: false,
264 showShortcut: false,
265 prefixCls: 'rmc-calendar',
266 type: 'range',
267 defaultTimeValue: new Date(2000, 0, 1, 8)
268};
\No newline at end of file