1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 |
|
5 | var _extends2 = require('babel-runtime/helpers/extends');
|
6 |
|
7 | var _extends3 = _interopRequireDefault(_extends2);
|
8 |
|
9 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
10 |
|
11 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
12 |
|
13 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
14 |
|
15 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
16 |
|
17 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
18 |
|
19 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
20 |
|
21 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
22 |
|
23 | var _inherits3 = _interopRequireDefault(_inherits2);
|
24 |
|
25 | var _class, _temp, _initialiseProps;
|
26 |
|
27 | var _react = require('react');
|
28 |
|
29 | var _react2 = _interopRequireDefault(_react);
|
30 |
|
31 | var _propTypes = require('prop-types');
|
32 |
|
33 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
34 |
|
35 | var _reactLifecyclesCompat = require('react-lifecycles-compat');
|
36 |
|
37 | var _moment = require('moment');
|
38 |
|
39 | var _moment2 = _interopRequireDefault(_moment);
|
40 |
|
41 | var _classnames2 = require('classnames');
|
42 |
|
43 | var _classnames3 = _interopRequireDefault(_classnames2);
|
44 |
|
45 | var _configProvider = require('../config-provider');
|
46 |
|
47 | var _configProvider2 = _interopRequireDefault(_configProvider);
|
48 |
|
49 | var _zhCn = require('../locale/zh-cn');
|
50 |
|
51 | var _zhCn2 = _interopRequireDefault(_zhCn);
|
52 |
|
53 | var _util = require('../util');
|
54 |
|
55 | var _cardHeader = require('./head/card-header');
|
56 |
|
57 | var _cardHeader2 = _interopRequireDefault(_cardHeader);
|
58 |
|
59 | var _datePanelHeader = require('./head/date-panel-header');
|
60 |
|
61 | var _datePanelHeader2 = _interopRequireDefault(_datePanelHeader);
|
62 |
|
63 | var _monthPanelHeader = require('./head/month-panel-header');
|
64 |
|
65 | var _monthPanelHeader2 = _interopRequireDefault(_monthPanelHeader);
|
66 |
|
67 | var _yearPanelHeader = require('./head/year-panel-header');
|
68 |
|
69 | var _yearPanelHeader2 = _interopRequireDefault(_yearPanelHeader);
|
70 |
|
71 | var _dateTable = require('./table/date-table');
|
72 |
|
73 | var _dateTable2 = _interopRequireDefault(_dateTable);
|
74 |
|
75 | var _monthTable = require('./table/month-table');
|
76 |
|
77 | var _monthTable2 = _interopRequireDefault(_monthTable);
|
78 |
|
79 | var _yearTable = require('./table/year-table');
|
80 |
|
81 | var _yearTable2 = _interopRequireDefault(_yearTable);
|
82 |
|
83 | var _utils = require('./utils');
|
84 |
|
85 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
86 |
|
87 | var isValueChanged = function isValueChanged(value, oldVlaue) {
|
88 | if (value && oldVlaue) {
|
89 | if (!_moment2.default.isMoment(value)) {
|
90 | value = (0, _moment2.default)(value);
|
91 | }
|
92 | if (!_moment2.default.isMoment(oldVlaue)) {
|
93 | oldVlaue = (0, _moment2.default)(oldVlaue);
|
94 | }
|
95 | return value.valueOf() !== oldVlaue.valueOf();
|
96 | } else {
|
97 | return value !== oldVlaue;
|
98 | }
|
99 | };
|
100 |
|
101 |
|
102 | var Calendar = (_temp = _class = function (_Component) {
|
103 | (0, _inherits3.default)(Calendar, _Component);
|
104 |
|
105 | function Calendar(props, context) {
|
106 | (0, _classCallCheck3.default)(this, Calendar);
|
107 |
|
108 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props, context));
|
109 |
|
110 | _initialiseProps.call(_this);
|
111 |
|
112 | var value = (0, _utils.formatDateValue)(props.value || props.defaultValue);
|
113 | var visibleMonth = (0, _utils.getVisibleMonth)(props.defaultVisibleMonth, value);
|
114 |
|
115 | _this.MODES = props.modes;
|
116 | _this.today = (0, _moment2.default)();
|
117 | _this.state = {
|
118 | value: value,
|
119 | mode: props.mode || _this.MODES[0],
|
120 | MODES: _this.MODES,
|
121 | visibleMonth: visibleMonth
|
122 | };
|
123 | return _this;
|
124 | }
|
125 |
|
126 | Calendar.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {
|
127 | var st = {};
|
128 | if ('value' in props) {
|
129 | var value = (0, _utils.formatDateValue)(props.value);
|
130 | if (value && isValueChanged(props.value, state.value)) {
|
131 | st.visibleMonth = value;
|
132 | }
|
133 | st.value = value;
|
134 | }
|
135 |
|
136 | if (props.mode && state.MODES.indexOf(props.mode) > -1) {
|
137 | st.mode = props.mode;
|
138 | }
|
139 |
|
140 | return st;
|
141 | };
|
142 |
|
143 | |
144 |
|
145 |
|
146 |
|
147 |
|
148 | Calendar.prototype.changeVisibleMonthByOffset = function changeVisibleMonthByOffset(offset, type) {
|
149 | var cloneValue = this.state.visibleMonth.clone();
|
150 | cloneValue.add(offset, type);
|
151 | this.changeVisibleMonth(cloneValue, 'buttonClick');
|
152 | };
|
153 |
|
154 | Calendar.prototype.render = function render() {
|
155 | var _classnames, _tables, _panelHeaders;
|
156 |
|
157 | var _props = this.props,
|
158 | prefix = _props.prefix,
|
159 | rtl = _props.rtl,
|
160 | className = _props.className,
|
161 | shape = _props.shape,
|
162 | showOtherMonth = _props.showOtherMonth,
|
163 | format = _props.format,
|
164 | locale = _props.locale,
|
165 | dateCellRender = _props.dateCellRender,
|
166 | monthCellRender = _props.monthCellRender,
|
167 | yearCellRender = _props.yearCellRender,
|
168 | disabledDate = _props.disabledDate,
|
169 | yearRange = _props.yearRange,
|
170 | disableChangeMode = _props.disableChangeMode,
|
171 | others = (0, _objectWithoutProperties3.default)(_props, ['prefix', 'rtl', 'className', 'shape', 'showOtherMonth', 'format', 'locale', 'dateCellRender', 'monthCellRender', 'yearCellRender', 'disabledDate', 'yearRange', 'disableChangeMode']);
|
172 |
|
173 | var state = this.state;
|
174 |
|
175 | var classNames = (0, _classnames3.default)((_classnames = {}, _classnames[prefix + 'calendar'] = true, _classnames[prefix + 'calendar-' + shape] = shape, _classnames), className);
|
176 |
|
177 | if (rtl) {
|
178 | others.dir = 'rtl';
|
179 | }
|
180 |
|
181 | var visibleMonth = state.visibleMonth;
|
182 |
|
183 |
|
184 | if (locale.momentLocale) {
|
185 | state.value && state.value.locale(locale.momentLocale);
|
186 | visibleMonth.locale(locale.momentLocale);
|
187 | }
|
188 |
|
189 | var localeData = (0, _utils.getLocaleData)(locale.format || {}, visibleMonth.localeData());
|
190 |
|
191 | var headerProps = {
|
192 | prefix: prefix,
|
193 | value: state.value,
|
194 | mode: state.mode,
|
195 | disableChangeMode: disableChangeMode,
|
196 | yearRange: yearRange,
|
197 | locale: locale,
|
198 | rtl: rtl,
|
199 | visibleMonth: visibleMonth,
|
200 | momentLocale: localeData,
|
201 | changeMode: this.changeMode,
|
202 | changeVisibleMonth: this.changeVisibleMonth,
|
203 | goNextDecade: this.goNextDecade,
|
204 | goNextYear: this.goNextYear,
|
205 | goNextMonth: this.goNextMonth,
|
206 | goPrevDecade: this.goPrevDecade,
|
207 | goPrevYear: this.goPrevYear,
|
208 | goPrevMonth: this.goPrevMonth
|
209 | };
|
210 |
|
211 | var tableProps = {
|
212 | prefix: prefix,
|
213 | visibleMonth: visibleMonth,
|
214 | showOtherMonth: showOtherMonth,
|
215 | value: state.value,
|
216 | mode: state.mode,
|
217 | locale: locale,
|
218 | dateCellRender: dateCellRender,
|
219 | monthCellRender: monthCellRender,
|
220 | yearCellRender: yearCellRender,
|
221 | disabledDate: disabledDate,
|
222 | momentLocale: localeData,
|
223 | today: this.today,
|
224 | goPrevDecade: this.goPrevDecade,
|
225 | goNextDecade: this.goNextDecade
|
226 | };
|
227 |
|
228 | var tables = (_tables = {}, _tables[_utils.CALENDAR_MODE_DATE] = _react2.default.createElement(_dateTable2.default, (0, _extends3.default)({ format: format }, tableProps, { onSelectDate: this.onSelectCell })), _tables[_utils.CALENDAR_MODE_MONTH] = _react2.default.createElement(_monthTable2.default, (0, _extends3.default)({}, tableProps, { onSelectMonth: this.onSelectCell })), _tables[_utils.CALENDAR_MODE_YEAR] = _react2.default.createElement(_yearTable2.default, (0, _extends3.default)({}, tableProps, { rtl: rtl, onSelectYear: this.onSelectCell })), _tables);
|
229 |
|
230 | var panelHeaders = (_panelHeaders = {}, _panelHeaders[_utils.CALENDAR_MODE_DATE] = _react2.default.createElement(_datePanelHeader2.default, headerProps), _panelHeaders[_utils.CALENDAR_MODE_MONTH] = _react2.default.createElement(_monthPanelHeader2.default, headerProps), _panelHeaders[_utils.CALENDAR_MODE_YEAR] = _react2.default.createElement(_yearPanelHeader2.default, headerProps), _panelHeaders);
|
231 |
|
232 | return _react2.default.createElement(
|
233 | 'div',
|
234 | (0, _extends3.default)({}, _util.obj.pickOthers(Calendar.propTypes, others), { className: classNames }),
|
235 | shape === 'panel' ? panelHeaders[state.mode] : _react2.default.createElement(_cardHeader2.default, headerProps),
|
236 | tables[state.mode]
|
237 | );
|
238 | };
|
239 |
|
240 | return Calendar;
|
241 | }(_react.Component), _class.propTypes = (0, _extends3.default)({}, _configProvider2.default.propTypes, {
|
242 | prefix: _propTypes2.default.string,
|
243 | rtl: _propTypes2.default.bool,
|
244 | |
245 |
|
246 |
|
247 | defaultValue: _utils.checkMomentObj,
|
248 | |
249 |
|
250 |
|
251 | value: _utils.checkMomentObj,
|
252 | |
253 |
|
254 |
|
255 | mode: _propTypes2.default.oneOf(_utils.CALENDAR_MODES),
|
256 |
|
257 | modes: _propTypes2.default.array,
|
258 |
|
259 | disableChangeMode: _propTypes2.default.bool,
|
260 |
|
261 | format: _propTypes2.default.string,
|
262 | |
263 |
|
264 |
|
265 | showOtherMonth: _propTypes2.default.bool,
|
266 | |
267 |
|
268 |
|
269 | defaultVisibleMonth: _propTypes2.default.func,
|
270 | |
271 |
|
272 |
|
273 | shape: _propTypes2.default.oneOf(['card', 'fullscreen', 'panel']),
|
274 | |
275 |
|
276 |
|
277 |
|
278 | onSelect: _propTypes2.default.func,
|
279 | |
280 |
|
281 |
|
282 |
|
283 | onModeChange: _propTypes2.default.func,
|
284 | |
285 |
|
286 |
|
287 |
|
288 |
|
289 | onVisibleMonthChange: _propTypes2.default.func,
|
290 | |
291 |
|
292 |
|
293 | className: _propTypes2.default.string,
|
294 | |
295 |
|
296 |
|
297 |
|
298 |
|
299 | dateCellRender: _propTypes2.default.func,
|
300 | |
301 |
|
302 |
|
303 |
|
304 |
|
305 | monthCellRender: _propTypes2.default.func,
|
306 | yearCellRender: _propTypes2.default.func,
|
307 | |
308 |
|
309 |
|
310 | yearRange: _propTypes2.default.arrayOf(_propTypes2.default.number),
|
311 | |
312 |
|
313 |
|
314 |
|
315 |
|
316 |
|
317 | disabledDate: _propTypes2.default.func,
|
318 | |
319 |
|
320 |
|
321 | locale: _propTypes2.default.object
|
322 | }), _class.defaultProps = {
|
323 | prefix: 'next-',
|
324 | rtl: false,
|
325 | shape: 'fullscreen',
|
326 | modes: _utils.CALENDAR_MODES,
|
327 | disableChangeMode: false,
|
328 | format: 'YYYY-MM-DD',
|
329 | onSelect: _util.func.noop,
|
330 | onVisibleMonthChange: _util.func.noop,
|
331 | onModeChange: _util.func.noop,
|
332 | dateCellRender: function dateCellRender(value) {
|
333 | return value.date();
|
334 | },
|
335 | locale: _zhCn2.default.Calendar,
|
336 | showOtherMonth: true
|
337 | }, _initialiseProps = function _initialiseProps() {
|
338 | var _this2 = this;
|
339 |
|
340 | this.onSelectCell = function (date, nextMode) {
|
341 | var visibleMonth = _this2.state.visibleMonth;
|
342 | var _props2 = _this2.props,
|
343 | shape = _props2.shape,
|
344 | showOtherMonth = _props2.showOtherMonth;
|
345 |
|
346 |
|
347 |
|
348 | if (!showOtherMonth && !(0, _utils.isSameYearMonth)(visibleMonth, date)) {
|
349 | return;
|
350 | }
|
351 |
|
352 | _this2.changeVisibleMonth(date, 'cellClick');
|
353 |
|
354 |
|
355 | if (_this2.state.mode === _this2.MODES[0]) {
|
356 | _this2.props.onSelect(date);
|
357 | }
|
358 |
|
359 | if (shape === 'panel') {
|
360 | _this2.changeMode(nextMode);
|
361 | }
|
362 | };
|
363 |
|
364 | this.changeMode = function (nextMode) {
|
365 | if (nextMode && _this2.MODES.indexOf(nextMode) > -1 && nextMode !== _this2.state.mode) {
|
366 | _this2.setState({ mode: nextMode });
|
367 | _this2.props.onModeChange(nextMode);
|
368 | }
|
369 | };
|
370 |
|
371 | this.changeVisibleMonth = function (date, reason) {
|
372 | if (!(0, _utils.isSameYearMonth)(date, _this2.state.visibleMonth)) {
|
373 | _this2.setState({ visibleMonth: date });
|
374 | _this2.props.onVisibleMonthChange(date, reason);
|
375 | }
|
376 | };
|
377 |
|
378 | this.goPrevDecade = function () {
|
379 | _this2.changeVisibleMonthByOffset(-10, 'years');
|
380 | };
|
381 |
|
382 | this.goNextDecade = function () {
|
383 | _this2.changeVisibleMonthByOffset(10, 'years');
|
384 | };
|
385 |
|
386 | this.goPrevYear = function () {
|
387 | _this2.changeVisibleMonthByOffset(-1, 'years');
|
388 | };
|
389 |
|
390 | this.goNextYear = function () {
|
391 | _this2.changeVisibleMonthByOffset(1, 'years');
|
392 | };
|
393 |
|
394 | this.goPrevMonth = function () {
|
395 | _this2.changeVisibleMonthByOffset(-1, 'months');
|
396 | };
|
397 |
|
398 | this.goNextMonth = function () {
|
399 | _this2.changeVisibleMonthByOffset(1, 'months');
|
400 | };
|
401 | }, _temp);
|
402 | Calendar.displayName = 'Calendar';
|
403 | exports.default = (0, _reactLifecyclesCompat.polyfill)(Calendar);
|
404 | module.exports = exports['default']; |
\ | No newline at end of file |