UNPKG

5.08 kBJavaScriptView Raw
1import _extends from 'babel-runtime/helpers/extends';
2import _typeof from 'babel-runtime/helpers/typeof';
3import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';
4import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
5import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
6import _inherits from 'babel-runtime/helpers/inherits';
7
8var _class, _temp, _initialiseProps;
9
10import React from 'react';
11import { polyfill } from 'react-lifecycles-compat';
12import classnames from 'classnames';
13import * as PT from 'prop-types';
14
15import SharedPT from '../prop-types';
16import { func, obj, datejs } from '../../util';
17import { setTime } from '../util';
18
19import Calendar from '../../calendar2';
20import TimePanel from './time-panel';
21
22var DatePanel = (_temp = _class = function (_React$Component) {
23 _inherits(DatePanel, _React$Component);
24
25 function DatePanel(props) {
26 _classCallCheck(this, DatePanel);
27
28 // 默认时间
29 var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
30
31 _initialiseProps.call(_this);
32
33 var _props$timePanelProps = props.timePanelProps,
34 timePanelProps = _props$timePanelProps === undefined ? {} : _props$timePanelProps;
35
36 var defaultTime = timePanelProps.defaultValue;
37
38 if (defaultTime) {
39 // fix: https://github.com/alibaba-fusion/next/issues/3203
40 defaultTime = datejs(defaultTime, typeof defaultTime === 'string' ? timePanelProps.format || 'HH:mm:ss' : undefined);
41 }
42
43 _this.state = {
44 defaultTime: defaultTime
45 };
46 return _this;
47 }
48
49 DatePanel.prototype.render = function render() {
50 var _classnames;
51
52 var _props = this.props,
53 mode = _props.mode,
54 panelMode = _props.panelMode,
55 prefix = _props.prefix,
56 showTime = _props.showTime,
57 value = _props.value,
58 disabledDate = _props.disabledDate,
59 disabledTime = _props.disabledTime,
60 timePanelProps = _props.timePanelProps,
61 dateCellRender = _props.dateCellRender,
62 restProps = _objectWithoutProperties(_props, ['mode', 'panelMode', 'prefix', 'showTime', 'value', 'disabledDate', 'disabledTime', 'timePanelProps', 'dateCellRender']);
63
64 var className = classnames(prefix + 'date-picker2-panel', (_classnames = {}, _classnames[prefix + 'date-time-picker2-panel'] = showTime, _classnames));
65
66 // 禁用时间
67 var _disabledTime = void 0;
68 if (showTime && mode === panelMode && disabledTime) {
69 _disabledTime = typeof disabledTime === 'function' ? disabledTime(value) : disabledTime;
70 if ((typeof _disabledTime === 'undefined' ? 'undefined' : _typeof(_disabledTime)) !== 'object') {
71 _disabledTime = null;
72 }
73 }
74
75 return React.createElement(
76 'div',
77 { className: className },
78 React.createElement(Calendar, _extends({}, obj.pickProps(Calendar.propTypes, restProps), {
79 shape: 'panel',
80 value: value,
81 panelMode: mode,
82 colNum: showTime ? 6 : undefined,
83 onSelect: this.handleSelect,
84 onPanelChange: this.handlePanelChange,
85 disabledDate: disabledDate,
86 dateCellRender: dateCellRender
87 })),
88 showTime && mode === panelMode ? React.createElement(TimePanel, _extends({}, obj.pickProps(TimePanel.propTypes, restProps), {
89 prefix: prefix,
90 value: value || this.state.defaultTime,
91 onSelect: this.onTimeSelect,
92 disabledTime: disabledTime,
93 timePanelProps: _extends({}, _disabledTime, timePanelProps)
94 })) : null
95 );
96 };
97
98 return DatePanel;
99}(React.Component), _class.propTypes = {
100 rtl: PT.bool,
101 prefix: PT.string,
102 locale: PT.object,
103 mode: SharedPT.mode,
104 panelMode: PT.any,
105 value: SharedPT.date,
106 disabledDate: PT.func,
107 showTime: PT.bool,
108 resetTime: PT.bool,
109 timePanelProps: PT.object,
110 disabledTime: SharedPT.disabledTime,
111 dateCellRender: PT.func
112}, _class.defaultProps = {
113 showTime: false,
114 resetTime: false
115}, _initialiseProps = function _initialiseProps() {
116 var _this2 = this;
117
118 this.onTimeSelect = function (v) {
119 _this2.handleSelect(v, true);
120 };
121
122 this.handleSelect = function (v, fromTimeChange) {
123 var defaultTime = _this2.state.defaultTime;
124
125
126 var timeVal = null;
127
128 if (!_this2.props.resetTime && !fromTimeChange) {
129 timeVal = _this2.props.value || defaultTime || datejs();
130 }
131
132 v = setTime(v, timeVal);
133
134 func.invoke(_this2.props, 'onSelect', [v]);
135 };
136
137 this.handlePanelChange = function (v, mode) {
138 func.invoke(_this2.props, 'onPanelChange', [v, mode]);
139 };
140}, _temp);
141DatePanel.displayName = 'DatePanel';
142
143
144export default polyfill(DatePanel);
\No newline at end of file