UNPKG

20.5 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 _react = require('react');
10
11var _react2 = _interopRequireDefault(_react);
12
13var _propTypes = require('prop-types');
14
15var _propTypes2 = _interopRequireDefault(_propTypes);
16
17var _beeDatepicker = require('bee-datepicker');
18
19var _beeDatepicker2 = _interopRequireDefault(_beeDatepicker);
20
21var _zh_CN = require('bee-datepicker/build/locale/zh_CN');
22
23var _zh_CN2 = _interopRequireDefault(_zh_CN);
24
25var _beeFormControl = require('bee-form-control');
26
27var _beeFormControl2 = _interopRequireDefault(_beeFormControl);
28
29var _beeSelect = require('bee-select');
30
31var _beeSelect2 = _interopRequireDefault(_beeSelect);
32
33var _beeInputNumber = require('bee-input-number');
34
35var _beeInputNumber2 = _interopRequireDefault(_beeInputNumber);
36
37var _FilterDropDown = require('./FilterDropDown');
38
39var _FilterDropDown2 = _interopRequireDefault(_FilterDropDown);
40
41function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
42
43function _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; }
44
45function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
46
47function _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; }
48
49function _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); }
50
51var RangePicker = _beeDatepicker2["default"].RangePicker,
52 YearPicker = _beeDatepicker2["default"].YearPicker,
53 MonthPicker = _beeDatepicker2["default"].MonthPicker,
54 WeekPicker = _beeDatepicker2["default"].WeekPicker;
55
56
57var propTypes = {
58 filterDropdown: _propTypes2["default"].string
59};
60
61var FilterType = function (_Component) {
62 _inherits(FilterType, _Component);
63
64 function FilterType(props) {
65 _classCallCheck(this, FilterType);
66
67 var _this = _possibleConstructorReturn(this, _Component.call(this, props));
68
69 _this.clearFilter = function () {
70 var _this$props = _this.props,
71 onFilterClear = _this$props.onFilterClear,
72 dataIndex = _this$props.dataIndex;
73
74 if (_this.state.value !== "") {
75 _this.setState({
76 value: "", //清空值
77 condition: _this.props.filterDropdownType == 'string' ? 'LIKE' : 'EQ' //切回默认查询条件
78 }, function () {
79 //调用清除方法参数为当前字段的field
80 onFilterClear && onFilterClear(dataIndex);
81 });
82 }
83 };
84
85 _this.changeText = function (val) {
86 var _this$props2 = _this.props,
87 onFilterChange = _this$props2.onFilterChange,
88 dataIndex = _this$props2.dataIndex;
89
90 _this.setState({
91 value: val
92 }, function () {
93 onFilterChange(dataIndex, val, _this.state.condition);
94 });
95 };
96
97 _this.changeTextCall = function (e) {
98 var _this$props3 = _this.props,
99 onFilterChange = _this$props3.onFilterChange,
100 dataIndex = _this$props3.dataIndex;
101
102 if (e.keyCode == 13) {
103 e.target.value !== "" && onFilterChange(dataIndex, e.target.value, _this.state.condition);
104 }
105 };
106
107 _this.changeValue = function () {
108 _this.setState({
109 value: ""
110 });
111 };
112
113 _this.onSelectDropdown = function (item) {
114 var _this$props4 = _this.props,
115 onFilterChange = _this$props4.onFilterChange,
116 dataIndex = _this$props4.dataIndex;
117
118 _this.setState({
119 condition: item.key
120 }, function () {
121 _this.state.value !== "" && onFilterChange && onFilterChange(dataIndex, _this.state.value, _this.state.condition);
122 });
123 };
124
125 _this.changeNumber = function (value) {
126 var _this$props5 = _this.props,
127 onFilterChange = _this$props5.onFilterChange,
128 dataIndex = _this$props5.dataIndex;
129
130 _this.setState({
131 value: value
132 }, function () {
133 onFilterChange(dataIndex, value, _this.state.condition);
134 });
135 };
136
137 _this.clearNumber = function () {
138 var onChange = _this.props.onChange;
139
140 onChange && onChange("");
141 _this.setState({
142 value: ""
143 });
144 };
145
146 _this.changeTextCallBlur = function (val) {
147 var onChange = _this.props.onChange;
148
149 onChange && onChange(val);
150 };
151
152 _this.changeSelect = function (value) {
153 var _this$props6 = _this.props,
154 onFilterChange = _this$props6.onFilterChange,
155 dataIndex = _this$props6.dataIndex;
156
157 if (onFilterChange) {
158 onFilterChange(dataIndex, value, _this.state.condition);
159 _this.setState({
160 value: value
161 });
162 }
163 };
164
165 _this.clearSelectValue = function () {
166 _this.setState({
167 selectValue: ""
168 }, function () {
169 _this.changeSelect("");
170 });
171 };
172
173 _this.clearDateValue = function () {
174 _this.setState({
175 dateValue: ""
176 }, function () {
177 _this.changeDate("");
178 });
179 };
180
181 _this.changeDate = function (value) {
182 var _this$props7 = _this.props,
183 onFilterChange = _this$props7.onFilterChange,
184 dataIndex = _this$props7.dataIndex;
185
186 if (onFilterChange) {
187 onFilterChange(dataIndex, value, _this.state.condition);
188 _this.setState({
189 value: value,
190 open: false
191 });
192 }
193 };
194
195 _this.renderControl = function (rendertype) {
196 var _this$props8 = _this.props,
197 filterInputNumberOptions = _this$props8.filterInputNumberOptions,
198 filterDropdownIncludeKeys = _this$props8.filterDropdownIncludeKeys,
199 dataIndex = _this$props8.dataIndex,
200 filterDropdown = _this$props8.filterDropdown,
201 filterDropdownType = _this$props8.filterDropdownType,
202 format = _this$props8.format,
203 className = _this$props8.className,
204 onChange = _this$props8.onChange,
205 onSelectDropdown = _this$props8.onSelectDropdown,
206 clsPrefix = _this$props8.clsPrefix,
207 locale = _this$props8.locale;
208
209 switch (rendertype) {
210 case 'text':
211 return _react2["default"].createElement(
212 'div',
213 { className: clsPrefix + ' filter-wrap' },
214 _react2["default"].createElement(_beeFormControl2["default"], {
215 value: _this.state.value,
216 className: className,
217 onChange: _this.changeText,
218 onKeyDown: _this.changeTextCall
219 //onBlur={this.changeTextCallBlur}
220 }),
221 _react2["default"].createElement(_FilterDropDown2["default"], {
222 locale: locale,
223 dataIndex: dataIndex,
224 dataText: _this.state.value,
225 onSelectDropdown: _this.onSelectDropdown,
226 onClickClear: _this.clearFilter,
227 isShowClear: _this.state.value,
228 isShowCondition: filterDropdown,
229 filterDropdownType: filterDropdownType,
230 filterDropdownIncludeKeys: filterDropdownIncludeKeys
231 })
232 );
233 case 'number':
234 return _react2["default"].createElement(
235 'div',
236 { className: clsPrefix + ' filter-wrap' },
237 _react2["default"].createElement(_beeInputNumber2["default"], _extends({}, filterInputNumberOptions, {
238 className: className,
239 value: _this.state.value,
240 onChange: _this.changeNumber,
241 iconStyle: 'one'
242 })),
243 _react2["default"].createElement(_FilterDropDown2["default"], {
244 locale: locale,
245 dataIndex: dataIndex,
246 dataText: _this.state.value,
247 onSelectDropdown: _this.onSelectDropdown,
248 onClickClear: _this.clearFilter,
249 isShowClear: _this.state.value != 0,
250 isShowCondition: filterDropdown,
251 filterDropdownType: filterDropdownType,
252 filterDropdownIncludeKeys: filterDropdownIncludeKeys
253 })
254 );
255 case 'dropdown':
256 return _react2["default"].createElement(
257 'div',
258 { className: clsPrefix + ' filter-wrap' },
259 _react2["default"].createElement(_beeSelect2["default"], _extends({}, _this.props, {
260 size: 'sm',
261 value: _this.state.value,
262 onChange: _this.changeSelect
263 })),
264 _react2["default"].createElement(_FilterDropDown2["default"], {
265 locale: locale,
266 dataIndex: dataIndex,
267 dataText: _this.state.value,
268 onSelectDropdown: _this.onSelectDropdown,
269 onClickClear: _this.clearFilter,
270 isShowCondition: filterDropdown,
271 isShowClear: _this.state.value,
272 filterDropdownType: filterDropdownType,
273 filterDropdownIncludeKeys: filterDropdownIncludeKeys
274 })
275 );
276 case 'date':
277 return _react2["default"].createElement(
278 'div',
279 { className: clsPrefix + ' filter-wrap' },
280 _react2["default"].createElement(_beeDatepicker2["default"], _extends({}, _this.props, {
281 value: _this.state.value,
282 onChange: _this.changeDate,
283 open: _this.state.open,
284 format: format,
285 locale: _zh_CN2["default"]
286 })),
287 _react2["default"].createElement(_FilterDropDown2["default"], {
288 locale: locale,
289 dataIndex: dataIndex,
290 dataText: _this.state.value,
291 onSelectDropdown: _this.onSelectDropdown,
292 onClickClear: _this.clearFilter,
293 isShowCondition: filterDropdown,
294 isShowClear: _this.state.value,
295 filterDropdownType: filterDropdownType,
296 filterDropdownIncludeKeys: filterDropdownIncludeKeys
297 })
298 );
299 case 'dateyear':
300 return _react2["default"].createElement(
301 'div',
302 { className: clsPrefix + ' filter-wrap' },
303 _react2["default"].createElement(YearPicker, _extends({}, _this.props, {
304 value: _this.state.value,
305 onChange: _this.changeDate,
306 open: _this.state.open,
307 format: format,
308 locale: _zh_CN2["default"]
309 })),
310 _react2["default"].createElement(_FilterDropDown2["default"], {
311 locale: locale,
312 dataIndex: dataIndex,
313 dataText: _this.state.value,
314 onSelectDropdown: _this.onSelectDropdown,
315 onClickClear: _this.clearFilter,
316 isShowCondition: filterDropdown,
317 isShowClear: _this.state.value,
318 filterDropdownType: filterDropdownType,
319 filterDropdownIncludeKeys: filterDropdownIncludeKeys
320 })
321 );
322 case 'datemonth':
323 return _react2["default"].createElement(
324 'div',
325 { className: clsPrefix + ' filter-wrap' },
326 _react2["default"].createElement(MonthPicker, _extends({}, _this.props, {
327 value: _this.state.value,
328 onChange: _this.changeDate,
329 open: _this.state.open,
330 format: format,
331 locale: _zh_CN2["default"]
332 })),
333 _react2["default"].createElement(_FilterDropDown2["default"], {
334 locale: locale,
335 dataIndex: dataIndex,
336 dataText: _this.state.value,
337 onSelectDropdown: _this.onSelectDropdown,
338 onClickClear: _this.clearFilter,
339 isShowCondition: filterDropdown,
340 isShowClear: _this.state.value,
341 filterDropdownType: filterDropdownType,
342 filterDropdownIncludeKeys: filterDropdownIncludeKeys
343 })
344 );
345 case 'dateweek':
346 return _react2["default"].createElement(
347 'div',
348 { className: clsPrefix + ' filter-wrap' },
349 _react2["default"].createElement(WeekPicker, _extends({}, _this.props, {
350 value: _this.state.value,
351 onChange: _this.changeDate,
352 open: _this.state.open,
353 format: format,
354 locale: _zh_CN2["default"]
355 })),
356 _react2["default"].createElement(_FilterDropDown2["default"], {
357 locale: locale,
358 dataIndex: dataIndex,
359 dataText: _this.state.value,
360 onSelectDropdown: _this.onSelectDropdown,
361 onClickClear: _this.clearFilter,
362 isShowCondition: filterDropdown,
363 isShowClear: _this.state.value,
364 filterDropdownType: filterDropdownType,
365 filterDropdownIncludeKeys: filterDropdownIncludeKeys
366 })
367 );
368 case 'daterange':
369 return _react2["default"].createElement(
370 'div',
371 { className: clsPrefix + ' filter-wrap' },
372 _react2["default"].createElement(RangePicker, _extends({}, _this.props, {
373 value: _this.state.value,
374 onChange: _this.changeDate,
375 open: _this.state.open,
376 format: format,
377 showTime: true,
378 locale: _zh_CN2["default"],
379 placeholder: '开始 ~ 结束',
380 dateInputPlaceholder: ['开始', '结束'],
381 showClear: true
382 })),
383 _react2["default"].createElement(_FilterDropDown2["default"], {
384 locale: locale,
385 dataIndex: dataIndex,
386 dataText: _this.state.value,
387 onSelectDropdown: _this.onSelectDropdown,
388 onClickClear: _this.clearFilter,
389 isShowCondition: filterDropdown,
390 isShowClear: _this.state.value,
391 filterDropdownIncludeKeys: filterDropdownIncludeKeys
392 })
393 );
394 case 'bool':
395 return _react2["default"].createElement(
396 'div',
397 { className: clsPrefix + ' filter-wrap' },
398 _react2["default"].createElement(Switch, {
399 className: className,
400 onChange: onChange
401 }),
402 _react2["default"].createElement(_FilterDropDown2["default"], { locale: locale,
403 onSelectDropdown: onSelectDropdown,
404 filterDropdownIncludeKeys: filterDropdownIncludeKeys
405 })
406 );
407 default:
408 return _react2["default"].createElement('div', null);
409 }
410 };
411
412 _this.state = {
413 value: "",
414 text: "",
415 selectValue: "",
416 dateValue: "",
417 open: false,
418 condition: props.filterDropdownType == 'string' ? 'LIKE' : 'EQ',
419 number: 0
420 };
421 return _this;
422 }
423
424 /**
425 * 清除过滤条件
426 *
427 */
428
429
430 /**
431 * 设置输入文本的值
432 *
433 */
434
435
436 /**
437 * 输入框回车执行回调
438 *
439 */
440
441 /**
442 * 更改修改值
443 *
444 */
445
446 /**
447 * 下拉条件的回调
448 *
449 * @param {*} key 字段
450 * @param {*} value 值1,2,3...6
451 */
452
453
454 /**
455 * 修改数值型的值
456 *
457 */
458
459 //清除数值
460
461
462 //失去焦点后执行函数
463
464 //设置下拉值
465
466 //清除下拉值
467
468 //清除日期值
469
470 //设置日期值
471
472 //组件渲染
473 /**
474 * 根据不同的类型生成对应的组件类型包含一些参数的适应
475 *
476 * @param {*} rendertype 参数类型,包括['text','dropdown','date','dateyear','datemonth','dateweek',daterange','number']
477 * @returns
478 */
479
480
481 FilterType.prototype.render = function render() {
482 var rendertype = this.props.rendertype;
483
484 return _react2["default"].createElement(
485 'div',
486 { 'data-filter-type': 'filterContext' },
487 this.renderControl(rendertype)
488 );
489 };
490
491 return FilterType;
492}(_react.Component);
493
494FilterType.propTypes = propTypes;
495FilterType.defaultProps = {
496 filterDropdown: 'show'
497};
498exports["default"] = FilterType;
499module.exports = exports['default'];
\No newline at end of file