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;
|
26 |
|
27 | var _react = require('react');
|
28 |
|
29 | var _react2 = _interopRequireDefault(_react);
|
30 |
|
31 | var _reactLifecyclesCompat = require('react-lifecycles-compat');
|
32 |
|
33 | var _propTypes = require('prop-types');
|
34 |
|
35 | var PT = _interopRequireWildcard(_propTypes);
|
36 |
|
37 | var _classnames3 = require('classnames');
|
38 |
|
39 | var _classnames4 = _interopRequireDefault(_classnames3);
|
40 |
|
41 | var _propTypes2 = require('../prop-types');
|
42 |
|
43 | var _propTypes3 = _interopRequireDefault(_propTypes2);
|
44 |
|
45 | var _constant = require('../constant');
|
46 |
|
47 | var _util = require('../../util');
|
48 |
|
49 | var _util2 = require('../util');
|
50 |
|
51 | var _input = require('../../input');
|
52 |
|
53 | var _input2 = _interopRequireDefault(_input);
|
54 |
|
55 | var _icon = require('../../icon');
|
56 |
|
57 | var _icon2 = _interopRequireDefault(_icon);
|
58 |
|
59 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
60 |
|
61 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
62 |
|
63 | var DATE = _constant.DATE_PICKER_MODE.DATE,
|
64 | WEEK = _constant.DATE_PICKER_MODE.WEEK,
|
65 | MONTH = _constant.DATE_PICKER_MODE.MONTH,
|
66 | QUARTER = _constant.DATE_PICKER_MODE.QUARTER,
|
67 | YEAR = _constant.DATE_PICKER_MODE.YEAR;
|
68 | var DateInput = (_temp = _class = function (_React$Component) {
|
69 | (0, _inherits3.default)(DateInput, _React$Component);
|
70 |
|
71 | function DateInput(props) {
|
72 | (0, _classCallCheck3.default)(this, DateInput);
|
73 |
|
74 | var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this, props));
|
75 |
|
76 | _this.setInputRef = function (el, index) {
|
77 | if (_this.props.isRange) {
|
78 | if (!_this.input) {
|
79 | _this.input = [];
|
80 | }
|
81 | _this.input[index] = el;
|
82 | } else {
|
83 | _this.input = el;
|
84 | }
|
85 | };
|
86 |
|
87 | _this.setValue = function (v) {
|
88 | var _this$props = _this.props,
|
89 | isRange = _this$props.isRange,
|
90 | inputType = _this$props.inputType,
|
91 | value = _this$props.value;
|
92 |
|
93 | var newVal = v;
|
94 |
|
95 | if (isRange) {
|
96 | newVal = [].concat(value);
|
97 | newVal[inputType] = v;
|
98 | }
|
99 |
|
100 | return newVal;
|
101 | };
|
102 |
|
103 | _this.formatter = function (v) {
|
104 | var format = _this.props.format;
|
105 |
|
106 | return typeof format === 'function' ? format(v) : v.format(format);
|
107 | };
|
108 |
|
109 | _this.onInput = function (v, e, eventType) {
|
110 | v = _this.setValue(v);
|
111 |
|
112 | if (eventType === 'clear') {
|
113 | v = null;
|
114 | e.stopPropagation();
|
115 | }
|
116 |
|
117 | _util.func.invoke(_this.props, 'onInput', [v, eventType]);
|
118 | };
|
119 |
|
120 | _this.handleTypeChange = function (inputType) {
|
121 | if (inputType !== _this.props.inputType) {
|
122 | _util.func.invoke(_this.props, 'onInputTypeChange', [inputType]);
|
123 | }
|
124 | };
|
125 |
|
126 | _this.getPlaceholder = function () {
|
127 | var _mode2placeholder;
|
128 |
|
129 | var _this$props2 = _this.props,
|
130 | locale = _this$props2.locale,
|
131 | isRange = _this$props2.isRange,
|
132 | mode = _this$props2.mode;
|
133 | var placeholder = locale.placeholder,
|
134 | selectDate = locale.selectDate,
|
135 | monthPlaceholder = locale.monthPlaceholder,
|
136 | weekPlaceholder = locale.weekPlaceholder,
|
137 | yearPlaceholder = locale.yearPlaceholder,
|
138 | startPlaceholder = locale.startPlaceholder,
|
139 | quarterPlaceholder = locale.quarterPlaceholder,
|
140 | endPlaceholder = locale.endPlaceholder;
|
141 |
|
142 | var mode2placeholder = (_mode2placeholder = {}, _mode2placeholder[DATE] = selectDate, _mode2placeholder[WEEK] = weekPlaceholder, _mode2placeholder[MONTH] = monthPlaceholder, _mode2placeholder[QUARTER] = quarterPlaceholder, _mode2placeholder[YEAR] = yearPlaceholder, _mode2placeholder);
|
143 |
|
144 | var holder = _this.props.placeholder;
|
145 |
|
146 | holder = holder || (isRange ? [startPlaceholder, endPlaceholder] : mode2placeholder[mode] || placeholder);
|
147 |
|
148 | if (isRange && !Array.isArray(holder)) {
|
149 | holder = Array(2).fill(holder);
|
150 | }
|
151 |
|
152 | return holder;
|
153 | };
|
154 |
|
155 | _this.getHtmlSize = function () {
|
156 | var _this$props3 = _this.props,
|
157 | isRange = _this$props3.isRange,
|
158 | format = _this$props3.format,
|
159 | hasBorder = _this$props3.hasBorder;
|
160 |
|
161 | var value = '2020-12-12 12:12:12';
|
162 | var size = 0;
|
163 |
|
164 | if (isRange) {
|
165 | var fmtStr = (0, _util2.fmtValue)([value, value].map(_util.datejs), format);
|
166 | size = Math.max.apply(Math, fmtStr.map(function (s) {
|
167 | return s && s.length || 0;
|
168 | }));
|
169 | } else {
|
170 | var _fmtStr = (0, _util2.fmtValue)((0, _util.datejs)(value), format);
|
171 | (0, _util2.fmtValue)((0, _util.datejs)(value), format);
|
172 | size = _fmtStr && _fmtStr.length || 0;
|
173 | }
|
174 |
|
175 | return String(Math.max(size, hasBorder ? 12 : 8));
|
176 | };
|
177 |
|
178 | _this.prefixCls = props.prefix + 'date-picker2-input';
|
179 | return _this;
|
180 | }
|
181 |
|
182 | |
183 |
|
184 |
|
185 |
|
186 |
|
187 | DateInput.prototype.render = function render() {
|
188 | var _classnames2;
|
189 |
|
190 | var onInput = this.onInput,
|
191 | setInputRef = this.setInputRef,
|
192 | handleTypeChange = this.handleTypeChange,
|
193 | prefixCls = this.prefixCls;
|
194 | var _props = this.props,
|
195 | autoFocus = _props.autoFocus,
|
196 | readOnly = _props.readOnly,
|
197 | isRange = _props.isRange,
|
198 | value = _props.value,
|
199 | prefix = _props.prefix,
|
200 | hasClear = _props.hasClear,
|
201 | inputType = _props.inputType,
|
202 | size = _props.size,
|
203 | focus = _props.focus,
|
204 | hasBorder = _props.hasBorder,
|
205 | separator = _props.separator,
|
206 | disabled = _props.disabled,
|
207 | inputProps = _props.inputProps,
|
208 | dateInputAriaLabel = _props.dateInputAriaLabel,
|
209 | state = _props.state,
|
210 | label = _props.label,
|
211 | restProps = (0, _objectWithoutProperties3.default)(_props, ['autoFocus', 'readOnly', 'isRange', 'value', 'prefix', 'hasClear', 'inputType', 'size', 'focus', 'hasBorder', 'separator', 'disabled', 'inputProps', 'dateInputAriaLabel', 'state', 'label']);
|
212 |
|
213 |
|
214 | var placeholder = this.getPlaceholder();
|
215 | var htmlSize = this.getHtmlSize();
|
216 |
|
217 | var sharedProps = (0, _extends3.default)({}, _util.obj.pickProps(restProps, _input2.default), inputProps, {
|
218 | size: size,
|
219 | htmlSize: htmlSize,
|
220 | readOnly: readOnly,
|
221 | hasBorder: false,
|
222 | onChange: onInput
|
223 | });
|
224 |
|
225 | var rangeProps = void 0;
|
226 | if (isRange) {
|
227 | rangeProps = [_constant.DATE_INPUT_TYPE.BEGIN, _constant.DATE_INPUT_TYPE.END].map(function (idx) {
|
228 | var _classnames;
|
229 |
|
230 | var _disabled = Array.isArray(disabled) ? disabled[idx] : disabled;
|
231 |
|
232 | return (0, _extends3.default)({}, sharedProps, {
|
233 | autoFocus: autoFocus,
|
234 | placeholder: placeholder[idx],
|
235 | value: value[idx] || '',
|
236 | 'aria-label': Array.isArray(dateInputAriaLabel) ? dateInputAriaLabel[idx] : dateInputAriaLabel,
|
237 | disabled: _disabled,
|
238 | ref: function ref(_ref) {
|
239 | return setInputRef(_ref, idx);
|
240 | },
|
241 | onFocus: _disabled ? undefined : function () {
|
242 | return handleTypeChange(idx);
|
243 | },
|
244 | className: (0, _classnames4.default)((_classnames = {}, _classnames[prefixCls + '-active'] = inputType === idx, _classnames))
|
245 | });
|
246 | });
|
247 | }
|
248 |
|
249 | var className = (0, _classnames4.default)([prefixCls, prefixCls + '-' + size, prefixCls + '-' + (isRange ? 'range' : 'date')], (_classnames2 = {}, _classnames2[prefixCls + '-focus'] = focus, _classnames2[prefixCls + '-noborder'] = !hasBorder, _classnames2[prefixCls + '-disabled'] = isRange && Array.isArray(disabled) ? disabled.every(function (v) {
|
250 | return v;
|
251 | }) : disabled, _classnames2));
|
252 |
|
253 | var calendarIcon = _react2.default.createElement(_icon2.default, { type: 'calendar', className: prefix + 'date-picker2-symbol-calendar-icon' });
|
254 |
|
255 | return _react2.default.createElement(
|
256 | 'div',
|
257 | { className: className },
|
258 | isRange ? _react2.default.createElement(
|
259 | _react2.default.Fragment,
|
260 | null,
|
261 | _react2.default.createElement(_input2.default, (0, _extends3.default)({}, rangeProps[0], {
|
262 | label: label,
|
263 | autoFocus: autoFocus
|
264 | })),
|
265 | _react2.default.createElement(
|
266 | 'div',
|
267 | { className: prefixCls + '-separator' },
|
268 | separator
|
269 | ),
|
270 | _react2.default.createElement(_input2.default, (0, _extends3.default)({}, rangeProps[1], {
|
271 | state: state,
|
272 | hasClear: !state && hasClear,
|
273 | hint: state ? null : calendarIcon
|
274 | }))
|
275 | ) : _react2.default.createElement(_input2.default, (0, _extends3.default)({}, sharedProps, {
|
276 | label: label,
|
277 | state: state,
|
278 | disabled: disabled,
|
279 | hasClear: !state && hasClear,
|
280 | placeholder: placeholder,
|
281 | autoFocus: autoFocus
|
282 | , ref: setInputRef,
|
283 | 'aria-label': dateInputAriaLabel,
|
284 | value: value || '',
|
285 | hint: state ? null : calendarIcon
|
286 | }))
|
287 | );
|
288 | };
|
289 |
|
290 | return DateInput;
|
291 | }(_react2.default.Component), _class.propTypes = {
|
292 | prefix: PT.string,
|
293 | rtl: PT.bool,
|
294 | locale: PT.object,
|
295 | value: _propTypes3.default.inputValue,
|
296 | inputType: _propTypes3.default.inputType,
|
297 | format: _propTypes3.default.format,
|
298 | isRange: PT.bool,
|
299 | hasClear: PT.bool,
|
300 | onInputTypeChange: PT.func,
|
301 | autoFocus: PT.bool,
|
302 | readOnly: _propTypes3.default.readOnly,
|
303 | placeholder: _propTypes3.default.placeholder,
|
304 | size: _propTypes3.default.size,
|
305 | focus: PT.bool,
|
306 | hasBorder: PT.bool,
|
307 | separator: PT.node,
|
308 | disabled: _propTypes3.default.disabled,
|
309 | inputProps: PT.object,
|
310 | dateInputAriaLabel: _propTypes3.default.ariaLabel,
|
311 | label: PT.node
|
312 | }, _class.defaultProps = {
|
313 | autoFocus: false,
|
314 | readOnly: false,
|
315 | hasClear: true,
|
316 | separator: '-',
|
317 | hasBorder: true,
|
318 | size: 'medium'
|
319 | }, _temp);
|
320 | DateInput.displayName = 'DateInput';
|
321 | exports.default = (0, _reactLifecyclesCompat.polyfill)(DateInput);
|
322 | module.exports = exports['default']; |
\ | No newline at end of file |