1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 |
|
5 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
6 |
|
7 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
8 |
|
9 | var _extends2 = require('babel-runtime/helpers/extends');
|
10 |
|
11 | var _extends3 = _interopRequireDefault(_extends2);
|
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 _classnames2 = require('classnames');
|
36 |
|
37 | var _classnames3 = _interopRequireDefault(_classnames2);
|
38 |
|
39 | var _moment = require('moment');
|
40 |
|
41 | var _moment2 = _interopRequireDefault(_moment);
|
42 |
|
43 | var _reactLifecyclesCompat = require('react-lifecycles-compat');
|
44 |
|
45 | var _overlay = require('../overlay');
|
46 |
|
47 | var _overlay2 = _interopRequireDefault(_overlay);
|
48 |
|
49 | var _input = require('../input');
|
50 |
|
51 | var _input2 = _interopRequireDefault(_input);
|
52 |
|
53 | var _icon = require('../icon');
|
54 |
|
55 | var _icon2 = _interopRequireDefault(_icon);
|
56 |
|
57 | var _calendar = require('../calendar');
|
58 |
|
59 | var _calendar2 = _interopRequireDefault(_calendar);
|
60 |
|
61 | var _configProvider = require('../config-provider');
|
62 |
|
63 | var _configProvider2 = _interopRequireDefault(_configProvider);
|
64 |
|
65 | var _zhCn = require('../locale/zh-cn');
|
66 |
|
67 | var _zhCn2 = _interopRequireDefault(_zhCn);
|
68 |
|
69 | var _util = require('../util');
|
70 |
|
71 | var _util2 = require('./util');
|
72 |
|
73 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
74 |
|
75 | var Popup = _overlay2.default.Popup;
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 | var WeekPicker = (_temp = _class = function (_Component) {
|
82 | (0, _inherits3.default)(WeekPicker, _Component);
|
83 |
|
84 | function WeekPicker(props, context) {
|
85 | (0, _classCallCheck3.default)(this, WeekPicker);
|
86 |
|
87 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props, context));
|
88 |
|
89 | _initialiseProps.call(_this);
|
90 |
|
91 | var value = (0, _util2.formatDateValue)(props.value || props.defaultValue, props.format);
|
92 |
|
93 | _this.state = {
|
94 | value: value,
|
95 | visible: props.visible || props.defaultVisible
|
96 | };
|
97 | return _this;
|
98 | }
|
99 |
|
100 | WeekPicker.getDerivedStateFromProps = function getDerivedStateFromProps(props) {
|
101 | var st = {};
|
102 | if ('value' in props) {
|
103 | st.value = (0, _util2.formatDateValue)(props.value, props.format);
|
104 | }
|
105 |
|
106 | if ('visible' in props) {
|
107 | st.visible = props.visible;
|
108 | }
|
109 |
|
110 | return st;
|
111 | };
|
112 |
|
113 | WeekPicker.prototype.renderPreview = function renderPreview(others) {
|
114 | var _props = this.props,
|
115 | prefix = _props.prefix,
|
116 | format = _props.format,
|
117 | className = _props.className,
|
118 | renderPreview = _props.renderPreview;
|
119 | var value = this.state.value;
|
120 |
|
121 | var previewCls = (0, _classnames3.default)(className, prefix + 'form-preview');
|
122 |
|
123 | var label = value ? value.format(format) : '';
|
124 |
|
125 | if (typeof renderPreview === 'function') {
|
126 | return _react2.default.createElement(
|
127 | 'div',
|
128 | (0, _extends3.default)({}, others, { className: previewCls }),
|
129 | renderPreview(value, this.props)
|
130 | );
|
131 | }
|
132 |
|
133 | return _react2.default.createElement(
|
134 | 'p',
|
135 | (0, _extends3.default)({}, others, { className: previewCls }),
|
136 | label
|
137 | );
|
138 | };
|
139 |
|
140 | WeekPicker.prototype.render = function render() {
|
141 | var _props2 = this.props,
|
142 | prefix = _props2.prefix,
|
143 | rtl = _props2.rtl,
|
144 | locale = _props2.locale,
|
145 | label = _props2.label,
|
146 | state = _props2.state,
|
147 | format = _props2.format,
|
148 | defaultVisibleMonth = _props2.defaultVisibleMonth,
|
149 | onVisibleMonthChange = _props2.onVisibleMonthChange,
|
150 | disabledDate = _props2.disabledDate,
|
151 | footerRender = _props2.footerRender,
|
152 | placeholder = _props2.placeholder,
|
153 | size = _props2.size,
|
154 | disabled = _props2.disabled,
|
155 | hasClear = _props2.hasClear,
|
156 | popupTriggerType = _props2.popupTriggerType,
|
157 | popupAlign = _props2.popupAlign,
|
158 | popupContainer = _props2.popupContainer,
|
159 | popupStyle = _props2.popupStyle,
|
160 | popupClassName = _props2.popupClassName,
|
161 | popupProps = _props2.popupProps,
|
162 | popupComponent = _props2.popupComponent,
|
163 | popupContent = _props2.popupContent,
|
164 | followTrigger = _props2.followTrigger,
|
165 | className = _props2.className,
|
166 | inputProps = _props2.inputProps,
|
167 | monthCellRender = _props2.monthCellRender,
|
168 | yearCellRender = _props2.yearCellRender,
|
169 | isPreview = _props2.isPreview,
|
170 | others = (0, _objectWithoutProperties3.default)(_props2, ['prefix', 'rtl', 'locale', 'label', 'state', 'format', 'defaultVisibleMonth', 'onVisibleMonthChange', 'disabledDate', 'footerRender', 'placeholder', 'size', 'disabled', 'hasClear', 'popupTriggerType', 'popupAlign', 'popupContainer', 'popupStyle', 'popupClassName', 'popupProps', 'popupComponent', 'popupContent', 'followTrigger', 'className', 'inputProps', 'monthCellRender', 'yearCellRender', 'isPreview']);
|
171 | var _state = this.state,
|
172 | visible = _state.visible,
|
173 | value = _state.value;
|
174 |
|
175 |
|
176 | var sharedInputProps = (0, _extends3.default)({}, inputProps, {
|
177 | size: size,
|
178 | disabled: disabled,
|
179 | onChange: this.onDateInputChange,
|
180 | onKeyDown: this.onKeyDown
|
181 | });
|
182 |
|
183 | if (rtl) {
|
184 | others.dir = 'rtl';
|
185 | }
|
186 |
|
187 | if (isPreview) {
|
188 | return this.renderPreview(_util.obj.pickOthers(others, WeekPicker.PropTypes));
|
189 | }
|
190 |
|
191 | var trigger = _react2.default.createElement(
|
192 | 'div',
|
193 | { className: prefix + 'week-picker-trigger' },
|
194 | _react2.default.createElement(_input2.default, (0, _extends3.default)({}, sharedInputProps, {
|
195 | label: label,
|
196 | state: state,
|
197 | value: value ? value.format(format) : '',
|
198 | role: 'combobox',
|
199 | 'aria-expanded': visible,
|
200 | readOnly: true,
|
201 | placeholder: placeholder || locale.weekPlaceholder,
|
202 | hint: _react2.default.createElement(_icon2.default, { type: 'calendar', className: prefix + 'date-picker-symbol-calendar-icon' }),
|
203 | hasClear: value && hasClear,
|
204 | className: prefix + 'week-picker-input'
|
205 | }))
|
206 | );
|
207 |
|
208 | var PopupComponent = popupComponent ? popupComponent : Popup;
|
209 |
|
210 | return _react2.default.createElement(
|
211 | 'div',
|
212 | (0, _extends3.default)({}, _util.obj.pickOthers(WeekPicker.propTypes, others), {
|
213 | className: (0, _classnames3.default)(prefix + 'week-picker', className)
|
214 | }),
|
215 | _react2.default.createElement(
|
216 | PopupComponent,
|
217 | (0, _extends3.default)({
|
218 | align: popupAlign
|
219 | }, popupProps, {
|
220 | followTrigger: followTrigger,
|
221 | disabled: disabled,
|
222 | visible: visible,
|
223 | onVisibleChange: this.onVisibleChange,
|
224 | triggerType: popupTriggerType,
|
225 | container: popupContainer,
|
226 | style: popupStyle,
|
227 | className: popupClassName,
|
228 | trigger: trigger
|
229 | }),
|
230 | popupContent ? popupContent : _react2.default.createElement(
|
231 | 'div',
|
232 | { dir: others.dir, className: prefix + 'week-picker-body' },
|
233 | _react2.default.createElement(_calendar2.default, {
|
234 | shape: 'panel',
|
235 | value: value,
|
236 | format: format,
|
237 | className: prefix + 'calendar-week',
|
238 | dateCellRender: this.dateRender,
|
239 | monthCellRender: monthCellRender,
|
240 | yearCellRender: yearCellRender,
|
241 | onSelect: this.onSelectCalendarPanel,
|
242 | defaultVisibleMonth: defaultVisibleMonth,
|
243 | onVisibleMonthChange: onVisibleMonthChange,
|
244 | disabledDate: disabledDate
|
245 | }),
|
246 | footerRender()
|
247 | )
|
248 | )
|
249 | );
|
250 | };
|
251 |
|
252 | return WeekPicker;
|
253 | }(_react.Component), _class.propTypes = (0, _extends3.default)({}, _configProvider2.default.propTypes, {
|
254 | prefix: _propTypes2.default.string,
|
255 | rtl: _propTypes2.default.bool,
|
256 | |
257 |
|
258 |
|
259 | label: _propTypes2.default.node,
|
260 | |
261 |
|
262 |
|
263 | state: _propTypes2.default.oneOf(['success', 'loading', 'error']),
|
264 | |
265 |
|
266 |
|
267 | placeholder: _propTypes2.default.string,
|
268 | |
269 |
|
270 |
|
271 |
|
272 | defaultVisibleMonth: _propTypes2.default.func,
|
273 | onVisibleMonthChange: _propTypes2.default.func,
|
274 | |
275 |
|
276 |
|
277 | value: _util2.checkDateValue,
|
278 | |
279 |
|
280 |
|
281 | defaultValue: _util2.checkDateValue,
|
282 | |
283 |
|
284 |
|
285 | format: _propTypes2.default.string,
|
286 | |
287 |
|
288 |
|
289 |
|
290 |
|
291 |
|
292 | disabledDate: _propTypes2.default.func,
|
293 | |
294 |
|
295 |
|
296 |
|
297 | footerRender: _propTypes2.default.func,
|
298 | |
299 |
|
300 |
|
301 |
|
302 | onChange: _propTypes2.default.func,
|
303 | |
304 |
|
305 |
|
306 | size: _propTypes2.default.oneOf(['small', 'medium', 'large']),
|
307 | |
308 |
|
309 |
|
310 | disabled: _propTypes2.default.bool,
|
311 | |
312 |
|
313 |
|
314 | hasClear: _propTypes2.default.bool,
|
315 | |
316 |
|
317 |
|
318 | visible: _propTypes2.default.bool,
|
319 | |
320 |
|
321 |
|
322 | defaultVisible: _propTypes2.default.bool,
|
323 | |
324 |
|
325 |
|
326 |
|
327 |
|
328 | onVisibleChange: _propTypes2.default.func,
|
329 | |
330 |
|
331 |
|
332 | popupTriggerType: _propTypes2.default.oneOf(['click', 'hover']),
|
333 | |
334 |
|
335 |
|
336 | popupAlign: _propTypes2.default.string,
|
337 | |
338 |
|
339 |
|
340 |
|
341 |
|
342 | popupContainer: _propTypes2.default.any,
|
343 | |
344 |
|
345 |
|
346 | popupStyle: _propTypes2.default.object,
|
347 | |
348 |
|
349 |
|
350 | popupClassName: _propTypes2.default.string,
|
351 | |
352 |
|
353 |
|
354 | popupProps: _propTypes2.default.object,
|
355 | |
356 |
|
357 |
|
358 | followTrigger: _propTypes2.default.bool,
|
359 | |
360 |
|
361 |
|
362 | inputProps: _propTypes2.default.object,
|
363 | |
364 |
|
365 |
|
366 |
|
367 |
|
368 | dateCellRender: _propTypes2.default.func,
|
369 | |
370 |
|
371 |
|
372 |
|
373 |
|
374 | monthCellRender: _propTypes2.default.func,
|
375 | |
376 |
|
377 |
|
378 | isPreview: _propTypes2.default.bool,
|
379 | |
380 |
|
381 |
|
382 |
|
383 | renderPreview: _propTypes2.default.func,
|
384 | yearCellRender: _propTypes2.default.func,
|
385 | locale: _propTypes2.default.object,
|
386 | className: _propTypes2.default.string,
|
387 | name: _propTypes2.default.string,
|
388 | popupComponent: _propTypes2.default.elementType,
|
389 | popupContent: _propTypes2.default.node
|
390 | }), _class.defaultProps = {
|
391 | prefix: 'next-',
|
392 | rtl: false,
|
393 | format: 'GGGG-Wo',
|
394 | size: 'medium',
|
395 | disabledDate: function disabledDate() {
|
396 | return false;
|
397 | },
|
398 | footerRender: function footerRender() {
|
399 | return null;
|
400 | },
|
401 | hasClear: true,
|
402 | popupTriggerType: 'click',
|
403 | popupAlign: 'tl tl',
|
404 | locale: _zhCn2.default.DatePicker,
|
405 | defaultVisible: false,
|
406 | onChange: _util.func.noop,
|
407 | onVisibleChange: _util.func.noop
|
408 | }, _initialiseProps = function _initialiseProps() {
|
409 | var _this2 = this;
|
410 |
|
411 | this.handleChange = function (newValue, prevValue) {
|
412 | if (!('value' in _this2.props)) {
|
413 | _this2.setState({
|
414 | value: newValue
|
415 | });
|
416 | }
|
417 |
|
418 | var newValueOf = newValue ? newValue.valueOf() : null;
|
419 | var preValueOf = prevValue ? prevValue.valueOf() : null;
|
420 |
|
421 | if (newValueOf !== preValueOf) {
|
422 | _this2.props.onChange(newValue);
|
423 | }
|
424 | };
|
425 |
|
426 | this.onDateInputChange = function (value, e, eventType) {
|
427 | if (eventType === 'clear' || !value) {
|
428 | e.stopPropagation();
|
429 | _this2.handleChange(null, _this2.state.value);
|
430 | }
|
431 | };
|
432 |
|
433 | this.onKeyDown = function (e) {
|
434 | if ([_util.KEYCODE.UP, _util.KEYCODE.DOWN, _util.KEYCODE.PAGE_UP, _util.KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1) {
|
435 | return;
|
436 | }
|
437 |
|
438 | if (e.altKey && [_util.KEYCODE.PAGE_UP, _util.KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1 || e.controlKey || e.shiftKey) {
|
439 | return;
|
440 | }
|
441 |
|
442 | var date = _this2.state.value;
|
443 |
|
444 | if (date && date.isValid()) {
|
445 | var stepUnit = e.altKey ? 'year' : 'month';
|
446 | switch (e.keyCode) {
|
447 | case _util.KEYCODE.UP:
|
448 | date.subtract(1, 'w');
|
449 | break;
|
450 | case _util.KEYCODE.DOWN:
|
451 | date.add(1, 'w');
|
452 | break;
|
453 | case _util.KEYCODE.PAGE_UP:
|
454 | date.subtract(1, stepUnit);
|
455 | break;
|
456 | case _util.KEYCODE.PAGE_DOWN:
|
457 | date.add(1, stepUnit);
|
458 | break;
|
459 | }
|
460 | } else {
|
461 | date = (0, _moment2.default)();
|
462 | }
|
463 |
|
464 | e.preventDefault();
|
465 |
|
466 | _this2.handleChange(date, _this2.state.value);
|
467 | };
|
468 |
|
469 | this.onVisibleChange = function (visible, type) {
|
470 | if (!('visible' in _this2.props)) {
|
471 | _this2.setState({
|
472 | visible: visible
|
473 | });
|
474 | }
|
475 | _this2.props.onVisibleChange(visible, type);
|
476 | };
|
477 |
|
478 | this.onSelectCalendarPanel = function (value) {
|
479 | _this2.handleChange(value, _this2.state.value);
|
480 | _this2.onVisibleChange(false, 'calendarSelect');
|
481 | };
|
482 |
|
483 | this.dateRender = function (value) {
|
484 | var _props3 = _this2.props,
|
485 | prefix = _props3.prefix,
|
486 | dateCellRender = _props3.dateCellRender;
|
487 |
|
488 | var selectedValue = _this2.state.value;
|
489 | var content = dateCellRender && typeof dateCellRender === 'function' ? dateCellRender(value) : value.dates();
|
490 | if (selectedValue && selectedValue.years() === value.years() && selectedValue.weeks() === value.weeks()) {
|
491 | var _classnames;
|
492 |
|
493 | var firstDay = _moment2.default.localeData().firstDayOfWeek();
|
494 | var endDay = firstDay - 1 < 0 ? 6 : firstDay - 1;
|
495 | return _react2.default.createElement(
|
496 | 'div',
|
497 | {
|
498 | className: (0, _classnames3.default)(prefix + 'calendar-week-active-date', (_classnames = {}, _classnames[prefix + 'calendar-week-active-start'] = value.days() === _moment2.default.localeData().firstDayOfWeek(), _classnames[prefix + 'calendar-week-active-end'] = value.days() === endDay, _classnames))
|
499 | },
|
500 | _react2.default.createElement(
|
501 | 'span',
|
502 | null,
|
503 | content
|
504 | )
|
505 | );
|
506 | }
|
507 |
|
508 | return content;
|
509 | };
|
510 | }, _temp);
|
511 | WeekPicker.displayName = 'WeekPicker';
|
512 | exports.default = (0, _reactLifecyclesCompat.polyfill)(WeekPicker);
|
513 | module.exports = exports['default']; |
\ | No newline at end of file |