UNPKG

12.1 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8
9var _YearPanel = require("./rc-calendar/year/YearPanel");
10
11var _YearPanel2 = _interopRequireDefault(_YearPanel);
12
13var _tinperBeeCore = require("tinper-bee-core");
14
15var _zh_CN = require("./locale/zh_CN");
16
17var _zh_CN2 = _interopRequireDefault(_zh_CN);
18
19var _react = require("react");
20
21var _react2 = _interopRequireDefault(_react);
22
23var _reactDom = require("react-dom");
24
25var _reactDom2 = _interopRequireDefault(_reactDom);
26
27var _Picker = require("./rc-calendar/Picker");
28
29var _Picker2 = _interopRequireDefault(_Picker);
30
31var _beeFormControl = require("bee-form-control");
32
33var _beeFormControl2 = _interopRequireDefault(_beeFormControl);
34
35var _beeInputGroup = require("bee-input-group");
36
37var _beeInputGroup2 = _interopRequireDefault(_beeInputGroup);
38
39var _beeIcon = require("bee-icon");
40
41var _beeIcon2 = _interopRequireDefault(_beeIcon);
42
43var _classnames = require("classnames");
44
45var _classnames2 = _interopRequireDefault(_classnames);
46
47var _moment = require("moment");
48
49var _moment2 = _interopRequireDefault(_moment);
50
51var _omit = require("omit.js");
52
53var _omit2 = _interopRequireDefault(_omit);
54
55function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
56
57function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
58
59function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }
60
61function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
62
63function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
64
65function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
66
67function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } /**
68 * Created by chief on 17/4/6.
69 */
70
71//去掉focus报错
72_Picker2["default"].prototype.componentDidUpdate = function () {};
73
74var YearPicker = function (_Component) {
75 _inherits(YearPicker, _Component);
76
77 function YearPicker(props, context) {
78 _classCallCheck(this, YearPicker);
79
80 var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));
81
82 _initialiseProps.call(_this);
83
84 _this.state = {
85 type: "year",
86 value: _this.initValue(props),
87 open: props.open || false,
88 showClose: false
89 };
90 return _this;
91 }
92
93 YearPicker.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
94 if ("value" in nextProps) {
95 this.setState({
96 value: this.initValue(nextProps)
97 });
98 }
99 if ("open" in nextProps) {
100 this.setState({
101 open: nextProps.open
102 });
103 }
104 if ("renderIcon" in nextProps) {
105 this.setState({
106 renderIcon: nextProps.renderIcon
107 });
108 }
109 };
110
111 YearPicker.prototype.render = function render() {
112 var _this2 = this;
113
114 var state = this.state;
115 var props = this.props;
116
117 var showClose = props.showClose,
118 others = _objectWithoutProperties(props, ["showClose"]);
119
120 var value = state.value;
121
122 var Calendar = _react2["default"].createElement(_YearPanel2["default"], _extends({
123 prefixCls: 'rc-calendar-picker',
124 rootPrefixCls: 'rc-calendar'
125 }, props, { focus: function focus() {},
126 value: this.state.value,
127 onSelect: this.onSelect,
128 showDateInput: true
129 }));
130 var classes = (0, _classnames2["default"])(props.className, "datepicker-container");
131 return _react2["default"].createElement(
132 "div",
133 _extends({ className: classes
134 }, (0, _omit2["default"])(others, ['closeIcon', 'renderIcon', 'disabled', 'format', 'locale', 'placeholder'])),
135 _react2["default"].createElement(
136 _Picker2["default"],
137 _extends({
138 animation: "slide-up"
139 }, props, {
140 onOpenChange: this.onOpenChange,
141 onChange: this.handleChange,
142 calendar: Calendar,
143 prefixCls: 'rc-calendar',
144 value: state.value,
145 open: this.state.open
146 }),
147 function (_ref) {
148 _objectDestructuringEmpty(_ref);
149
150 return _react2["default"].createElement(
151 _beeInputGroup2["default"],
152 { simple: true, className: "datepicker-input-group",
153 onMouseEnter: _this2.onMouseEnter,
154 onMouseLeave: _this2.onMouseLeave
155 },
156 _react2["default"].createElement(_beeFormControl2["default"], {
157 ref: function ref(_ref2) {
158 return _this2.outInput = _ref2;
159 },
160 placeholder: _this2.props.placeholder,
161 className: _this2.props.className,
162 disabled: props.disabled,
163 readOnly: true,
164 value: value && value.format(props.format) || ""
165 }),
166 showClose && _this2.state.value && _this2.state.showClose && !props.disabled ? _react2["default"].createElement(
167 _beeInputGroup2["default"].Button,
168 { shape: "border",
169 onClick: _this2.clear },
170 props.closeIcon()
171 ) : _react2["default"].createElement(
172 _beeInputGroup2["default"].Button,
173 { shape: "border" },
174 props.renderIcon()
175 )
176 );
177 }
178 )
179 );
180 };
181
182 return YearPicker;
183}(_react.Component);
184
185var _initialiseProps = function _initialiseProps() {
186 var _this3 = this;
187
188 this.initValue = function (props) {
189 var value = props.value || props.defaultValue;
190 if (value) {
191 if (typeof value == 'string') {
192 if ((0, _moment2["default"])(value).isValid()) {
193 value = (0, _moment2["default"])(value);
194 } else {
195 console.error('value is not in the correct format');
196 value = '';
197 }
198 } else if (value.format && value.isValid()) {
199 value = value;
200 } else {
201 console.error('value is not in the correct format');
202 value = '';
203 }
204 }
205 return value;
206 };
207
208 this.onChange = function (value) {
209 _this3.setState({
210 value: value
211 });
212 };
213
214 this.inputFocus = function () {
215 var self = _this3;
216 var input = document.querySelector('.rc-calendar-input');
217 if (input) {
218 if (input.value) {
219 input.select();
220 } else {
221 input.focus();
222 }
223 input.onkeydown = function (e) {
224 if (e.keyCode == _tinperBeeCore.KeyCode.DELETE) {
225 input.value = '';
226 self.props.onChange && self.props.onChange('', '');
227 } else if (e.keyCode == _tinperBeeCore.KeyCode.ESC) {
228 self.setState({
229 open: false
230 });
231 var v = self.state.value;
232 self.props.onOpenChange && self.props.onOpenChange(false, v, v && v.format(self.props.format) || '');
233 _reactDom2["default"].findDOMNode(self.outInput).focus(); // 按esc时候焦点回到input输入框
234 }
235 };
236 }
237 };
238
239 this.onOpenChange = function (open) {
240 var self = _this3;
241 _this3.setState({
242 open: open
243 });
244 if (open) {
245 setTimeout(function () {
246 self.inputFocus();
247 }, 200);
248 }
249 };
250
251 this.handleChange = function (value) {
252 var props = _this3.props;
253 _this3.setState({
254 value: value && _extends(value, { _type: 'year' }) || value
255 });
256 props.onChange && props.onChange(value, value && value.format(props.format) || '');
257 };
258
259 this.onMouseLeave = function (e) {
260 _this3.setState({
261 showClose: false
262 });
263 };
264
265 this.onMouseEnter = function (e) {
266 _this3.setState({
267 showClose: true
268 });
269 };
270
271 this.clear = function (e) {
272 e.stopPropagation();
273 _this3.setState({
274 value: ''
275 });
276 _this3.props.onChange && _this3.props.onChange('', '');
277 };
278
279 this.onSelect = function (value) {
280 var _props = _this3.props,
281 onSelect = _props.onSelect,
282 format = _props.format;
283
284 _this3.setState({
285 open: false
286 });
287 onSelect && onSelect(value, value ? value.format(format) : '');
288 _reactDom2["default"].findDOMNode(_this3.outInput).focus();
289 };
290};
291
292YearPicker.defaultProps = {
293 closeIcon: function closeIcon() {
294 return _react2["default"].createElement(_beeIcon2["default"], { type: "uf-close-c" });
295 },
296 renderIcon: function renderIcon() {
297 return _react2["default"].createElement(_beeIcon2["default"], { type: "uf-calendar" });
298 },
299 disabled: false,
300 showClose: true,
301 locale: _zh_CN2["default"],
302 format: 'YYYY',
303 validatorFunc: function validatorFunc() {
304 return true;
305 }
306};
307
308exports["default"] = YearPicker;
309module.exports = exports["default"];
\No newline at end of file