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.
- package/lib/DTableFiltersPopover/constants/index.js +30 -2
- package/lib/DTableFiltersPopover/index.css +36 -17
- package/lib/DTableFiltersPopover/index.js +118 -136
- package/lib/DTableFiltersPopover/utils/filter-item-utils.js +10 -4
- package/lib/DTableFiltersPopover/utils/index.js +358 -82
- package/lib/DTableFiltersPopover/widgets/collaborator-filter/index.js +6 -4
- package/lib/DTableFiltersPopover/widgets/department-select-filter/department-multiple-select-filter.js +13 -2
- package/lib/DTableFiltersPopover/widgets/department-select-filter/department-single-select-filter.js +18 -6
- package/lib/DTableFiltersPopover/widgets/filter-group.js +185 -0
- package/lib/DTableFiltersPopover/widgets/filter-item.js +138 -53
- package/lib/DTableFiltersPopover/widgets/filter-list/index.css +113 -16
- package/lib/DTableFiltersPopover/widgets/filter-list/index.js +226 -39
- package/lib/locales/en.json +5 -0
- package/lib/locales/zh-CN.json +5 -0
- package/lib/utils/column-utils.js +21 -2
- package/package.json +1 -1
- package/lib/DTableFiltersPopover/widgets/collaborator-filter/index.css +0 -0
package/lib/DTableFiltersPopover/widgets/department-select-filter/department-single-select-filter.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
184
|
-
|
|
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 ===
|
|
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("
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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 =
|
|
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
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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 =
|
|
640
|
-
const activePredicate =
|
|
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 =
|
|
645
|
-
} else if ((0,
|
|
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)),
|
|
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;
|