dtable-ui-component 6.0.37 → 6.0.38-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,14 +11,16 @@ var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _SelectedDepartments = _interopRequireDefault(require("../../../SelectedDepartments"));
12
12
  var _DepartmentSingleSelectEditor = _interopRequireDefault(require("../../../DepartmentSingleSelectEditor"));
13
13
  var _departments = require("../../../constants/departments");
14
+ var _ModalPortal = _interopRequireDefault(require("../../../ModalPortal"));
14
15
  var _commonHooks = require("../../../hooks/common-hooks");
15
16
  var _lang = require("../../../lang");
16
17
  function DepartmentSingleSelectFilter(props) {
17
18
  const {
18
19
  value,
19
20
  column,
20
- departments,
21
- userDepartmentIdsMap
21
+ isInModal,
22
+ userDepartmentIdsMap,
23
+ departments
22
24
  } = props;
23
25
  const [isShowSelector, setIsShowSelector] = (0, _react.useState)(false);
24
26
  const [selectedDepartment, setSelectedDepartment] = (0, _react.useState)(value || '');
@@ -77,20 +79,30 @@ function DepartmentSingleSelectFilter(props) {
77
79
  }, value ? /*#__PURE__*/_react.default.createElement("span", {
78
80
  className: "selected-option-show"
79
81
  }, /*#__PURE__*/_react.default.createElement(_SelectedDepartments.default, {
80
- value: selectedDepartmentIds,
81
- departments: departments
82
+ value: selectedDepartmentIds
82
83
  })) : /*#__PURE__*/_react.default.createElement("span", {
83
84
  className: "select-placeholder"
84
85
  }, (0, _lang.getLocale)('Select_department')), /*#__PURE__*/_react.default.createElement("span", {
85
86
  className: "dtable-font dtable-icon-down3"
86
- })), isShowSelector && /*#__PURE__*/_react.default.createElement(_DepartmentSingleSelectEditor.default, {
87
+ })), isShowSelector && !isInModal && /*#__PURE__*/_react.default.createElement(_DepartmentSingleSelectEditor.default, {
87
88
  enableSelectRange: false,
89
+ isInModal: isInModal,
88
90
  column: column,
89
91
  value: value,
90
92
  onCommit: onCommit,
91
93
  userDepartmentIdsMap: userDepartmentIdsMap,
92
94
  departments: departments,
93
95
  renderUserDepartmentOptions: renderUserDepartmentOptions
94
- }));
96
+ }), isShowSelector && isInModal && /*#__PURE__*/_react.default.createElement(_ModalPortal.default, null, /*#__PURE__*/_react.default.createElement(_DepartmentSingleSelectEditor.default, {
97
+ enableSelectRange: false,
98
+ isInModal: isInModal,
99
+ column: column,
100
+ value: value,
101
+ position: selectorRef.current.getBoundingClientRect(),
102
+ onCommit: onCommit,
103
+ userDepartmentIdsMap: userDepartmentIdsMap,
104
+ departments: departments,
105
+ renderUserDepartmentOptions: renderUserDepartmentOptions
106
+ })));
95
107
  }
96
108
  var _default = exports.default = DepartmentSingleSelectFilter;
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _dtableUtils = require("dtable-utils");
12
+ var _DTableCustomizeSelect = _interopRequireDefault(require("../../DTableCustomizeSelect"));
13
+ var _filterItem = _interopRequireDefault(require("./filter-item"));
14
+ var _filterItemUtils = _interopRequireDefault(require("../utils/filter-item-utils"));
15
+ var _constants = require("../constants");
16
+ var _utils = require("../utils");
17
+ var _DTableCommonAddTool = _interopRequireDefault(require("../../DTableCommonAddTool"));
18
+ var _lang = require("../../lang");
19
+ class FilterGroup extends _react.Component {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.onSelectGroupConjunction = conjunctionOption => {
23
+ const {
24
+ filterConjunction
25
+ } = this.props;
26
+ const {
27
+ filterConjunction: newConjunction
28
+ } = conjunctionOption;
29
+ if (newConjunction === filterConjunction) {
30
+ return;
31
+ }
32
+ this.props.modifyFilterConjunction(newConjunction);
33
+ };
34
+ this.deleteFilterGroup = event => {
35
+ event.nativeEvent.stopImmediatePropagation();
36
+ const {
37
+ index
38
+ } = this.props;
39
+ this.props.deleteFilterGroup(index);
40
+ };
41
+ this.modifyConjunctionInGroup = new_filter_conjunction => {
42
+ const {
43
+ index
44
+ } = this.props;
45
+ this.props.modifyConjunctionInGroup(index, new_filter_conjunction);
46
+ };
47
+ this.addFilterIntoGroup = () => {
48
+ const {
49
+ columns,
50
+ index
51
+ } = this.props;
52
+ const newFilter = (0, _utils.getDefaultFilter)(columns);
53
+ if (!newFilter) {
54
+ return;
55
+ }
56
+ this.props.addFilterIntoGroup(index, newFilter);
57
+ };
58
+ this.deleteFilterInGroup = filter_index => {
59
+ const {
60
+ index
61
+ } = this.props;
62
+ this.props.deleteFilterInGroup(index, filter_index);
63
+ };
64
+ this.updateFilterInGroup = (filter_index, new_filter) => {
65
+ const {
66
+ index
67
+ } = this.props;
68
+ this.props.updateFilterInGroup(index, filter_index, new_filter);
69
+ };
70
+ this.renderConjunction = () => {
71
+ const {
72
+ index,
73
+ filterConjunction,
74
+ conjunctionOptions
75
+ } = this.props;
76
+ switch (index) {
77
+ case 0:
78
+ {
79
+ return null;
80
+ }
81
+ case 1:
82
+ {
83
+ const activeConjunction = _filterItemUtils.default.getActiveConjunctionOption(filterConjunction, conjunctionOptions);
84
+ return /*#__PURE__*/_react.default.createElement(_DTableCustomizeSelect.default, {
85
+ value: activeConjunction,
86
+ options: conjunctionOptions,
87
+ onSelectOption: this.onSelectGroupConjunction
88
+ });
89
+ }
90
+ default:
91
+ {
92
+ return /*#__PURE__*/_react.default.createElement("span", {
93
+ className: "selected-conjunction-show"
94
+ }, (0, _lang.getLocale)(filterConjunction));
95
+ }
96
+ }
97
+ };
98
+ this.renderGroupFilters = () => {
99
+ const {
100
+ columns,
101
+ conjunctionOptions,
102
+ columnOptions,
103
+ filter,
104
+ index: groupIndex,
105
+ collaborators,
106
+ lang,
107
+ userDepartmentIdsMap,
108
+ departments,
109
+ firstDayOfWeek
110
+ } = this.props;
111
+ const {
112
+ filters: subFilters,
113
+ filter_conjunction
114
+ } = filter;
115
+ const subFilterConjunction = _constants.SUPPORT_CONJUNCTIONS.includes(filter_conjunction) ? filter_conjunction : _dtableUtils.FILTER_CONJUNCTION_TYPE.AND;
116
+ const subFiltersLength = Array.isArray(subFilters) ? subFilters.length : 0;
117
+ if (subFiltersLength === 0) {
118
+ return null;
119
+ }
120
+ return subFilters.map((currentFilter, subFilterIndex) => {
121
+ const {
122
+ column_key: sub_filter_column_key
123
+ } = currentFilter;
124
+ const {
125
+ error_message
126
+ } = _dtableUtils.ValidateFilter.validate(currentFilter, columns);
127
+ const filterColumn = columns.find(column => column.key === sub_filter_column_key) || {};
128
+ return /*#__PURE__*/_react.default.createElement(_filterItem.default, {
129
+ key: "filter-in-group-".concat(groupIndex, "-").concat(subFilterIndex),
130
+ isInModal: this.props.isInModal,
131
+ lang: lang,
132
+ index: subFilterIndex,
133
+ filter: currentFilter,
134
+ errorMessage: error_message,
135
+ filterColumn: filterColumn,
136
+ filterConjunction: subFilterConjunction,
137
+ conjunctionOptions: conjunctionOptions,
138
+ filterColumnOptions: columnOptions,
139
+ collaborators: collaborators,
140
+ userDepartmentIdsMap: userDepartmentIdsMap,
141
+ departments: departments,
142
+ firstDayOfWeek: firstDayOfWeek,
143
+ updateConjunction: this.modifyConjunctionInGroup,
144
+ deleteFilter: this.deleteFilterInGroup,
145
+ updateFilter: this.updateFilterInGroup
146
+ });
147
+ });
148
+ };
149
+ }
150
+ render() {
151
+ const {
152
+ level,
153
+ index
154
+ } = this.props;
155
+ return /*#__PURE__*/_react.default.createElement("div", {
156
+ className: (0, _classnames.default)('filter-item', 'filter-group', "level-".concat(level))
157
+ }, /*#__PURE__*/_react.default.createElement("div", {
158
+ className: "delete-filter",
159
+ onClick: this.deleteFilterGroup,
160
+ role: "button",
161
+ tabIndex: 0,
162
+ "aria-label": (0, _lang.getLocale)('Delete')
163
+ }, /*#__PURE__*/_react.default.createElement("i", {
164
+ "aria-hidden": "true",
165
+ className: "dtable-font dtable-icon-fork-number"
166
+ })), /*#__PURE__*/_react.default.createElement("div", {
167
+ className: "filter-group-wrapper"
168
+ }, /*#__PURE__*/_react.default.createElement("div", {
169
+ className: (0, _classnames.default)('filter-conjunction', {
170
+ 'conjunction-text': index > 1
171
+ })
172
+ }, this.renderConjunction()), /*#__PURE__*/_react.default.createElement("div", {
173
+ className: "filter-group-container"
174
+ }, this.renderGroupFilters(), /*#__PURE__*/_react.default.createElement(_DTableCommonAddTool.default, {
175
+ className: "group-filter-add-tool",
176
+ callBack: this.addFilterIntoGroup,
177
+ footerName: (0, _lang.getLocale)('Add_filter'),
178
+ addIconClassName: "popover-add-icon"
179
+ }))));
180
+ }
181
+ }
182
+ FilterGroup.defaultProps = {
183
+ level: 1
184
+ };
185
+ var _default = exports.default = FilterGroup;
@@ -17,9 +17,13 @@ var _departmentSingleSelectFilter = _interopRequireDefault(require("./department
17
17
  var _departmentMultipleSelectFilter = _interopRequireDefault(require("./department-select-filter/department-multiple-select-filter"));
18
18
  var _rateItem = _interopRequireDefault(require("./rate-item"));
19
19
  var _filterCalendar = _interopRequireDefault(require("./filter-calendar"));
20
+ var _filterItemUtils = _interopRequireDefault(require("../utils/filter-item-utils"));
20
21
  var _utils = require("../utils");
22
+ var _columnUtils = require("../../utils/column-utils");
23
+ var _CheckboxEditor = _interopRequireDefault(require("../../CheckboxEditor"));
24
+ var _NumberEditor = _interopRequireDefault(require("../../NumberEditor"));
25
+ var _constants = require("../constants");
21
26
  var _lang = require("../../lang");
22
- const EMPTY_PREDICATE = [_dtableUtils.FILTER_PREDICATE_TYPE.EMPTY, _dtableUtils.FILTER_PREDICATE_TYPE.NOT_EMPTY];
23
27
  class FilterItem extends _react.default.Component {
24
28
  constructor(_props) {
25
29
  var _this;
@@ -28,16 +32,15 @@ class FilterItem extends _react.default.Component {
28
32
  this.initSelectOptions = props => {
29
33
  const {
30
34
  filter,
31
- filterColumn,
32
- value
35
+ filterColumn
33
36
  } = props;
34
37
  let {
35
38
  filterPredicateList,
36
39
  filterTermModifierList
37
- } = (0, _utils.getColumnOptions)(filterColumn, value);
40
+ } = (0, _utils.getColumnOptions)(filterColumn);
38
41
  // The value of the calculation formula column does not exist in the shared view
39
42
  this.filterPredicateOptions = filterPredicateList ? filterPredicateList.map(predicate => {
40
- return _utils.FilterItemUtils.generatorPredicateOption(predicate);
43
+ return _filterItemUtils.default.generatorPredicateOption(predicate);
41
44
  }).filter(item => item) : [];
42
45
  const {
43
46
  filter_predicate
@@ -47,7 +50,7 @@ class FilterItem extends _react.default.Component {
47
50
  filterTermModifierList = _dtableUtils.filterTermModifierIsWithin;
48
51
  }
49
52
  this.filterTermModifierOptions = filterTermModifierList.map(termModifier => {
50
- return _utils.FilterItemUtils.generatorTermModifierOption(termModifier);
53
+ return _filterItemUtils.default.generatorTermModifierOption(termModifier);
51
54
  });
52
55
  }
53
56
  };
@@ -180,12 +183,21 @@ class FilterItem extends _react.default.Component {
180
183
  this.resetState(newFilter);
181
184
  this.props.updateFilter(index, newFilter);
182
185
  };
183
- this.onFilterTermCheckboxChanged = e => {
184
- this.onFilterTermChanged(e.target.checked);
186
+ this.onFilterTermCheckboxChanged = () => {
187
+ const {
188
+ filterColumn
189
+ } = this.props;
190
+ const value = this.checkboxEditor.getValue();
191
+ const checked = value[filterColumn.key];
192
+ this.onFilterTermChanged(checked);
185
193
  };
186
194
  this.onFilterTermTextChanged = value => {
187
195
  this.onFilterTermChanged(value);
188
196
  };
197
+ this.onFilterTermNumberChanged = () => {
198
+ const value = this.numberEditor.getValue();
199
+ this.onFilterTermChanged(Object.values(value)[0]);
200
+ };
189
201
  this.onFilterTermChanged = newFilterTerm => {
190
202
  const {
191
203
  index,
@@ -218,10 +230,13 @@ class FilterItem extends _react.default.Component {
218
230
  this.onFilterTermChanged(index);
219
231
  };
220
232
  this.getInputComponent = type => {
233
+ const {
234
+ filterColumn
235
+ } = this.props;
221
236
  const {
222
237
  filterTerm
223
238
  } = this.state;
224
- if (type === 'text') {
239
+ if (type === _constants.INPUT_CMP_TYPE_MAP.TEXT) {
225
240
  return /*#__PURE__*/_react.default.createElement(_DTableSearchInput.default, {
226
241
  value: filterTerm,
227
242
  onChange: this.onFilterTermTextChanged,
@@ -229,10 +244,22 @@ class FilterItem extends _react.default.Component {
229
244
  className: (0, _classnames.default)('text-truncate')
230
245
  });
231
246
  } else if (type === 'checkbox') {
232
- return /*#__PURE__*/_react.default.createElement("input", {
233
- type: "checkbox",
234
- checked: filterTerm,
235
- onChange: this.onFilterTermCheckboxChanged
247
+ return /*#__PURE__*/_react.default.createElement("div", {
248
+ className: "checkbox-filter-term"
249
+ }, /*#__PURE__*/_react.default.createElement(_CheckboxEditor.default, {
250
+ ref: ref => this.checkboxEditor = ref,
251
+ column: filterColumn,
252
+ value: filterTerm,
253
+ extraClassName: "filter-item-checkbox",
254
+ onChange: this.onFilterTermCheckboxChanged,
255
+ readOnly: false
256
+ }));
257
+ } else if (type === 'number') {
258
+ return /*#__PURE__*/_react.default.createElement(_NumberEditor.default, {
259
+ ref: ref => this.numberEditor = ref,
260
+ column: filterColumn,
261
+ value: filterTerm,
262
+ onCommit: this.onFilterTermNumberChanged
236
263
  });
237
264
  }
238
265
  };
@@ -249,11 +276,12 @@ class FilterItem extends _react.default.Component {
249
276
  }
250
277
  case 1:
251
278
  {
252
- const activeConjunction = _utils.FilterItemUtils.getActiveConjunctionOption(filterConjunction);
279
+ const activeConjunction = _filterItemUtils.default.getActiveConjunctionOption(filterConjunction);
253
280
  return /*#__PURE__*/_react.default.createElement(_DTableCustomizeSelect.default, {
254
281
  value: activeConjunction,
255
282
  options: conjunctionOptions,
256
- onSelectOption: this.onSelectConjunction
283
+ onSelectOption: this.onSelectConjunction,
284
+ isInModal: this.props.isInModal
257
285
  });
258
286
  }
259
287
  default:
@@ -284,27 +312,32 @@ class FilterItem extends _react.default.Component {
284
312
  if (Array.isArray(options) && Array.isArray(filterTerm)) {
285
313
  filterTerm.forEach(item => {
286
314
  let inOption = options.find(option => option.id === item);
315
+ let optionStyle = {
316
+ margin: '0 10px 0 0'
317
+ };
318
+ let optionName = null;
287
319
  if (inOption) {
288
- let optionStyle = {
289
- margin: '0 10px 0 0',
290
- background: inOption.color,
291
- color: inOption.textColor || null
292
- };
293
- labelArray.push( /*#__PURE__*/_react.default.createElement("span", {
294
- className: className,
295
- style: optionStyle,
296
- key: 'option_' + item,
297
- title: inOption.name,
298
- "aria-label": inOption.name
299
- }, inOption.name));
320
+ optionName = inOption.name;
321
+ optionStyle.background = inOption.color;
322
+ optionStyle.color = inOption.textColor || null;
323
+ } else {
324
+ optionStyle.background = _constants.DELETED_OPTION_BACKGROUND_COLOR;
325
+ optionName = (0, _lang.getLocale)(_constants.DELETED_OPTION_TIPS);
300
326
  }
327
+ labelArray.push( /*#__PURE__*/_react.default.createElement("span", {
328
+ className: className,
329
+ style: optionStyle,
330
+ key: 'option_' + item,
331
+ title: optionName,
332
+ "aria-label": optionName
333
+ }, optionName));
301
334
  });
302
335
  }
303
336
  const selectedOptionNames = labelArray.length > 0 ? {
304
337
  label: /*#__PURE__*/_react.default.createElement(_react.Fragment, null, labelArray)
305
338
  } : {};
306
339
  const dataOptions = options.map(option => {
307
- return _utils.FilterItemUtils.generatorMultipleSelectOption(option, filterTerm);
340
+ return _filterItemUtils.default.generatorMultipleSelectOption(option, filterTerm);
308
341
  });
309
342
  return /*#__PURE__*/_react.default.createElement(_DTableCustomizeSelect.default, {
310
343
  className: "selector-multiple-select",
@@ -315,7 +348,8 @@ class FilterItem extends _react.default.Component {
315
348
  searchable: true,
316
349
  searchPlaceholder: (0, _lang.getLocale)('Search_option'),
317
350
  noOptionsPlaceholder: (0, _lang.getLocale)('No_options_available'),
318
- supportMultipleSelect: isSupportMultipleSelect
351
+ supportMultipleSelect: isSupportMultipleSelect,
352
+ isInModal: _this.props.isInModal
319
353
  });
320
354
  };
321
355
  this.renderFilterTerm = filterColumn => {
@@ -337,7 +371,7 @@ class FilterItem extends _react.default.Component {
337
371
  filter_term_modifier
338
372
  } = filter;
339
373
  // predicate is empty or not empty
340
- if (EMPTY_PREDICATE.includes(filter_predicate)) {
374
+ if (_constants.EMPTY_PREDICATE.includes(filter_predicate)) {
341
375
  return null;
342
376
  }
343
377
 
@@ -366,7 +400,6 @@ class FilterItem extends _react.default.Component {
366
400
  case _dtableUtils.CellType.TEXT:
367
401
  case _dtableUtils.CellType.LONG_TEXT:
368
402
  case _dtableUtils.CellType.GEOLOCATION:
369
- case _dtableUtils.CellType.NUMBER:
370
403
  case _dtableUtils.CellType.AUTO_NUMBER:
371
404
  case _dtableUtils.CellType.DURATION:
372
405
  case _dtableUtils.CellType.EMAIL:
@@ -376,11 +409,15 @@ class FilterItem extends _react.default.Component {
376
409
  if (filter_predicate === _dtableUtils.FILTER_PREDICATE_TYPE.IS_CURRENT_USER_ID) {
377
410
  return null;
378
411
  }
379
- return this.getInputComponent('text');
412
+ return this.getInputComponent(_constants.INPUT_CMP_TYPE_MAP.TEXT);
413
+ }
414
+ case _dtableUtils.CellType.NUMBER:
415
+ {
416
+ return this.getInputComponent(_constants.INPUT_CMP_TYPE_MAP.NUMBER);
380
417
  }
381
418
  case _dtableUtils.CellType.CHECKBOX:
382
419
  {
383
- return this.getInputComponent('checkbox');
420
+ return this.getInputComponent(_constants.INPUT_CMP_TYPE_MAP.CHECKBOX);
384
421
  }
385
422
  case _dtableUtils.CellType.SINGLE_SELECT:
386
423
  {
@@ -409,7 +446,7 @@ class FilterItem extends _react.default.Component {
409
446
  };
410
447
  }
411
448
  let dataOptions = options.map(option => {
412
- return _utils.FilterItemUtils.generatorSingleSelectOption(option);
449
+ return _filterItemUtils.default.generatorSingleSelectOption(option);
413
450
  });
414
451
  return /*#__PURE__*/_react.default.createElement(_DTableCustomizeSelect.default, {
415
452
  className: "selector-single-select",
@@ -419,7 +456,8 @@ class FilterItem extends _react.default.Component {
419
456
  placeholder: (0, _lang.getLocale)('Select_an_option'),
420
457
  searchable: true,
421
458
  searchPlaceholder: (0, _lang.getLocale)('Search_option'),
422
- noOptionsPlaceholder: (0, _lang.getLocale)('No_options_available')
459
+ noOptionsPlaceholder: (0, _lang.getLocale)('No_options_available'),
460
+ isInModal: this.props.isInModal
423
461
  });
424
462
  }
425
463
  case _dtableUtils.CellType.MULTIPLE_SELECT:
@@ -436,7 +474,8 @@ class FilterItem extends _react.default.Component {
436
474
  value: filter_term || [],
437
475
  userDepartmentIdsMap: userDepartmentIdsMap,
438
476
  departments: departments,
439
- onCommit: this.onSelectMultiple
477
+ onCommit: this.onSelectMultiple,
478
+ isInModal: this.props.isInModal
440
479
  });
441
480
  }
442
481
  return /*#__PURE__*/_react.default.createElement(_departmentSingleSelectFilter.default, {
@@ -444,7 +483,8 @@ class FilterItem extends _react.default.Component {
444
483
  value: filter_term || '',
445
484
  userDepartmentIdsMap: userDepartmentIdsMap,
446
485
  departments: departments,
447
- onCommit: this.onSelectSingle
486
+ onCommit: this.onSelectSingle,
487
+ isInModal: this.props.isInModal
448
488
  });
449
489
  }
450
490
  case _dtableUtils.CellType.COLLABORATOR:
@@ -457,7 +497,8 @@ class FilterItem extends _react.default.Component {
457
497
  filterTerm: filter_term || [],
458
498
  filter_predicate: filter_predicate,
459
499
  collaborators: collaborators,
460
- onSelectCollaborator: this.onSelectCollaborator
500
+ onSelectCollaborator: this.onSelectCollaborator,
501
+ isInModal: this.props.isInModal
461
502
  });
462
503
  }
463
504
  case _dtableUtils.CellType.CREATOR:
@@ -471,7 +512,8 @@ class FilterItem extends _react.default.Component {
471
512
  filterIndex: index,
472
513
  filterTerm: filter_term || [],
473
514
  collaborators: creators,
474
- onSelectCollaborator: this.onSelectCreator
515
+ onSelectCollaborator: this.onSelectCreator,
516
+ isInModal: this.props.isInModal
475
517
  });
476
518
  }
477
519
  case _dtableUtils.CellType.RATE:
@@ -524,10 +566,19 @@ class FilterItem extends _react.default.Component {
524
566
  if (filterPredicate === _dtableUtils.FILTER_PREDICATE_TYPE.IS_CURRENT_USER_ID) {
525
567
  return null;
526
568
  }
569
+ if (result_type === _dtableUtils.FORMULA_RESULT_TYPE.NUMBER) {
570
+ const {
571
+ format
572
+ } = filterColumn.data || {};
573
+ if (format === _dtableUtils.CellType.DURATION) {
574
+ return this.getInputComponent(_constants.INPUT_CMP_TYPE_MAP.DURATION, filterColumn);
575
+ }
576
+ return this.getInputComponent(_constants.INPUT_CMP_TYPE_MAP.NUMBER, filterColumn);
577
+ }
527
578
  if (result_type === _dtableUtils.FORMULA_RESULT_TYPE.ARRAY) {
528
579
  return this.renderFilterTermByArrayType(filterPredicate, filterTerm, index, filterColumn);
529
580
  }
530
- return this.getInputComponent('text');
581
+ return this.getInputComponent(_constants.INPUT_CMP_TYPE_MAP.TEXT);
531
582
  };
532
583
  this.renderLinkFilterTerm = (filterPredicate, filterTerm, index, filterColumn) => {
533
584
  if (filterPredicate === _dtableUtils.FILTER_PREDICATE_TYPE.IS_CURRENT_USER_ID) {
@@ -564,7 +615,8 @@ class FilterItem extends _react.default.Component {
564
615
  return /*#__PURE__*/_react.default.createElement(_departmentMultipleSelectFilter.default, {
565
616
  value: filterTerm || [],
566
617
  departments: departments,
567
- onCommit: this.onSelectMultiple
618
+ onCommit: this.onSelectMultiple,
619
+ isInModal: this.props.isInModal
568
620
  });
569
621
  }
570
622
  if (_dtableUtils.DATE_COLUMN_OPTIONS.includes(array_type) || array_type === _dtableUtils.CellType.RATE || array_type === _dtableUtils.CellType.CHECKBOX) {
@@ -579,12 +631,22 @@ class FilterItem extends _react.default.Component {
579
631
  filterTerm: filterTerm || [],
580
632
  collaborators: collaborators,
581
633
  onSelectCollaborator: this.onSelectCollaborator,
582
- placeholder: (0, _lang.getLocale)('Add_collaborator')
634
+ placeholder: (0, _lang.getLocale)('Add_collaborator'),
635
+ isInModal: this.props.isInModal
583
636
  });
584
637
  }
585
638
  return this.getInputComponent('text');
586
639
  };
640
+ this.isRenderErrorTips = () => {
641
+ const {
642
+ errMsg
643
+ } = this.props;
644
+ return errMsg && errMsg !== _dtableUtils.FILTER_ERR_MSG.INCOMPLETE_FILTER;
645
+ };
587
646
  this.renderErrorMessage = () => {
647
+ if (!this.isRenderErrorTips()) {
648
+ return null;
649
+ }
588
650
  return /*#__PURE__*/_react.default.createElement("div", {
589
651
  className: "ml-2"
590
652
  }, /*#__PURE__*/_react.default.createElement("span", {
@@ -602,6 +664,7 @@ class FilterItem extends _react.default.Component {
602
664
  };
603
665
  this.filterPredicateOptions = null;
604
666
  this.filterTermModifierOptions = null;
667
+ this.filterToolTip = /*#__PURE__*/_react.default.createRef();
605
668
  this.invalidFilterTip = /*#__PURE__*/_react.default.createRef();
606
669
  this.initSelectOptions(_props);
607
670
  }
@@ -629,25 +692,31 @@ class FilterItem extends _react.default.Component {
629
692
  const {
630
693
  filter,
631
694
  filterColumn,
632
- filterColumnOptions,
633
- errMsg
695
+ filterColumnOptions
634
696
  } = this.props;
635
697
  const {
636
698
  filter_predicate,
637
699
  filter_term_modifier
638
700
  } = filter;
639
- const activeColumn = _utils.FilterItemUtils.generatorColumnOption(filterColumn);
640
- const activePredicate = _utils.FilterItemUtils.generatorPredicateOption(filter_predicate);
701
+ const activeColumn = _filterItemUtils.default.generatorColumnOption(filterColumn);
702
+ const activePredicate = _filterItemUtils.default.generatorPredicateOption(filter_predicate);
641
703
  let activeTermModifier = null;
642
704
  let _isCheckboxColumn = false;
643
705
  if ((0, _dtableUtils.isDateColumn)(filterColumn)) {
644
- activeTermModifier = _utils.FilterItemUtils.generatorTermModifierOption(filter_term_modifier);
645
- } else if ((0, _utils.isCheckboxColumn)(filterColumn)) {
706
+ activeTermModifier = _filterItemUtils.default.generatorTermModifierOption(filter_term_modifier);
707
+ } else if ((0, _columnUtils.isCheckboxColumn)(filterColumn)) {
646
708
  _isCheckboxColumn = true;
647
709
  }
710
+ const {
711
+ type
712
+ } = filterColumn;
713
+ const computedColumnTypes = [_dtableUtils.CellType.FORMULA, _dtableUtils.CellType.LINK_FORMULA, _dtableUtils.CellType.LINK];
714
+ const isContainPredicate = [_dtableUtils.FILTER_PREDICATE_TYPE.CONTAINS, _dtableUtils.FILTER_PREDICATE_TYPE.NOT_CONTAIN].includes(filter_predicate);
715
+ const isRenderErrorTips = this.isRenderErrorTips();
716
+ const showToolTip = computedColumnTypes.includes(type) && isContainPredicate && !isRenderErrorTips;
648
717
 
649
718
  // current predicate is not empty
650
- const isNeedShowTermModifier = !EMPTY_PREDICATE.includes(filter_predicate);
719
+ const isNeedShowTermModifier = !_constants.EMPTY_PREDICATE.includes(filter_predicate);
651
720
  return /*#__PURE__*/_react.default.createElement("div", {
652
721
  className: "filter-item"
653
722
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -669,22 +738,38 @@ class FilterItem extends _react.default.Component {
669
738
  onSelectOption: this.onSelectColumn,
670
739
  searchable: true,
671
740
  searchPlaceholder: (0, _lang.getLocale)('Search_column'),
672
- noOptionsPlaceholder: (0, _lang.getLocale)('No_results')
741
+ noOptionsPlaceholder: (0, _lang.getLocale)('No_results'),
742
+ isInModal: this.props.isInModal
673
743
  })), /*#__PURE__*/_react.default.createElement("div", {
674
744
  className: "filter-predicate ml-2 ".concat(_isCheckboxColumn ? 'filter-checkbox-predicate' : '')
675
745
  }, /*#__PURE__*/_react.default.createElement(_DTableCustomizeSelect.default, {
676
746
  value: activePredicate,
677
747
  options: filterPredicateOptions,
678
- onSelectOption: this.onSelectPredicate
748
+ onSelectOption: this.onSelectPredicate,
749
+ isInModal: this.props.isInModal
679
750
  })), (0, _dtableUtils.isDateColumn)(filterColumn) && isNeedShowTermModifier && /*#__PURE__*/_react.default.createElement("div", {
680
751
  className: "filter-term-modifier ml-2"
681
752
  }, /*#__PURE__*/_react.default.createElement(_DTableCustomizeSelect.default, {
682
753
  value: activeTermModifier,
683
754
  options: filterTermModifierOptions,
684
- onSelectOption: this.onSelectTermModifier
755
+ onSelectOption: this.onSelectTermModifier,
756
+ isInModal: this.props.isInModal
685
757
  })), /*#__PURE__*/_react.default.createElement("div", {
686
758
  className: "filter-term ml-2"
687
- }, this.renderFilterTerm(filterColumn)), errMsg && this.renderErrorMessage())));
759
+ }, this.renderFilterTerm(filterColumn)), showToolTip && /*#__PURE__*/_react.default.createElement("div", {
760
+ className: "ml-2"
761
+ }, /*#__PURE__*/_react.default.createElement("span", {
762
+ ref: this.filterToolTip,
763
+ id: "filter_tool_tip",
764
+ "aria-hidden": "true",
765
+ className: "dtable-font dtable-icon-exclamation-triangle",
766
+ style: {
767
+ color: '#FFC92C'
768
+ }
769
+ }), /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledTooltip, {
770
+ placement: "bottom",
771
+ target: this.filterToolTip
772
+ }, (0, _lang.getLocale)('filter_tip_message'))), this.renderErrorMessage())));
688
773
  }
689
774
  }
690
775
  var _default = exports.default = FilterItem;