1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.StateType = undefined;
|
7 |
|
8 | var _extends2 = require('babel-runtime/helpers/extends');
|
9 |
|
10 | var _extends3 = _interopRequireDefault(_extends2);
|
11 |
|
12 | var _createClass2 = require('babel-runtime/helpers/createClass');
|
13 |
|
14 | var _createClass3 = _interopRequireDefault(_createClass2);
|
15 |
|
16 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
17 |
|
18 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
19 |
|
20 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
21 |
|
22 | var _inherits3 = _interopRequireDefault(_inherits2);
|
23 |
|
24 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
25 |
|
26 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
27 |
|
28 | var _react = require('react');
|
29 |
|
30 | var _react2 = _interopRequireDefault(_react);
|
31 |
|
32 | var _rcAnimate = require('rc-animate');
|
33 |
|
34 | var _rcAnimate2 = _interopRequireDefault(_rcAnimate);
|
35 |
|
36 | var _TimePicker = require('./TimePicker');
|
37 |
|
38 | var _TimePicker2 = _interopRequireDefault(_TimePicker);
|
39 |
|
40 | var _DatePicker = require('./DatePicker');
|
41 |
|
42 | var _DatePicker2 = _interopRequireDefault(_DatePicker);
|
43 |
|
44 | var _ConfirmPanel = require('./calendar/ConfirmPanel');
|
45 |
|
46 | var _ConfirmPanel2 = _interopRequireDefault(_ConfirmPanel);
|
47 |
|
48 | var _ShortcutPanel = require('./calendar/ShortcutPanel');
|
49 |
|
50 | var _ShortcutPanel2 = _interopRequireDefault(_ShortcutPanel);
|
51 |
|
52 | var _AnimateWrapper = require('./calendar/AnimateWrapper');
|
53 |
|
54 | var _AnimateWrapper2 = _interopRequireDefault(_AnimateWrapper);
|
55 |
|
56 | var _Header = require('./calendar/Header');
|
57 |
|
58 | var _Header2 = _interopRequireDefault(_Header);
|
59 |
|
60 | var _util = require('./util');
|
61 |
|
62 | var _zh_CN = require('./locale/zh_CN');
|
63 |
|
64 | var _zh_CN2 = _interopRequireDefault(_zh_CN);
|
65 |
|
66 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
67 |
|
68 | var 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 |
|
78 | var 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 |
|
255 | exports['default'] = Calendar;
|
256 |
|
257 | Calendar.DefaultHeader = _Header2['default'];
|
258 | Calendar.DefaultShortcut = _ShortcutPanel2['default'];
|
259 | Calendar.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 |