@truedat/core 4.37.2 → 4.37.6
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/CHANGELOG.md +13 -0
- package/package.json +2 -2
- package/src/components/ModalSaveFilter.js +3 -1
- package/src/components/SelectedFilters.js +6 -1
- package/src/components/UserFilters.js +58 -54
- package/src/components/__tests__/__snapshots__/UserFilters.spec.js.snap +87 -89
- package/src/services/filters.js +10 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.37.4] 2022-02-04
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- [TD-4424] `UserFilters` are now disabled when the `SelectedFilters` `loading`
|
|
8
|
+
prop is truthy
|
|
9
|
+
|
|
10
|
+
## [4.37.3] 2022-02-03
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- [TD-2929] Added `scope` control on `SelectedFilters` for generic `UserSearchFilters`
|
|
15
|
+
|
|
3
16
|
## [4.36.8] 2022-01-24
|
|
4
17
|
|
|
5
18
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truedat/core",
|
|
3
|
-
"version": "4.37.
|
|
3
|
+
"version": "4.37.6",
|
|
4
4
|
"description": "Truedat Web Core",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"jsnext:main": "src/index.js",
|
|
@@ -104,5 +104,5 @@
|
|
|
104
104
|
"react-dom": ">= 16.8.6 < 17",
|
|
105
105
|
"semantic-ui-react": ">= 0.88.2 < 2.1"
|
|
106
106
|
},
|
|
107
|
-
"gitHead": "
|
|
107
|
+
"gitHead": "7a5cbf3bc73e19015fe5cc9891ed0c64f5b7246e"
|
|
108
108
|
}
|
|
@@ -29,7 +29,7 @@ SaveFilterForm.propTypes = {
|
|
|
29
29
|
setFilterName: PropTypes.func,
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
export const ModalSaveFilter = ({ saveFilters, activeFilters }) => {
|
|
32
|
+
export const ModalSaveFilter = ({ saveFilters, activeFilters, scope }) => {
|
|
33
33
|
const [filterName, setFilterName] = useState("");
|
|
34
34
|
|
|
35
35
|
const actions = (handleSubmit) => [
|
|
@@ -52,6 +52,7 @@ export const ModalSaveFilter = ({ saveFilters, activeFilters }) => {
|
|
|
52
52
|
saveFilters({
|
|
53
53
|
filters: activeFilters,
|
|
54
54
|
filterName: filterName,
|
|
55
|
+
scope,
|
|
55
56
|
});
|
|
56
57
|
};
|
|
57
58
|
|
|
@@ -78,6 +79,7 @@ export const ModalSaveFilter = ({ saveFilters, activeFilters }) => {
|
|
|
78
79
|
ModalSaveFilter.propTypes = {
|
|
79
80
|
saveFilters: PropTypes.func,
|
|
80
81
|
activeFilters: PropTypes.object,
|
|
82
|
+
scope: PropTypes.string,
|
|
81
83
|
};
|
|
82
84
|
|
|
83
85
|
export default ModalSaveFilter;
|
|
@@ -24,16 +24,19 @@ export const SelectedFilters = ({
|
|
|
24
24
|
selectedUserFilter,
|
|
25
25
|
toggleFilterValue,
|
|
26
26
|
userFilters,
|
|
27
|
+
userFilterScope,
|
|
27
28
|
filterItemMapping,
|
|
28
29
|
}) => (
|
|
29
30
|
<>
|
|
30
|
-
{
|
|
31
|
+
{_.isEmpty(userFilters) ? null : (
|
|
31
32
|
<UserFilters
|
|
32
33
|
applyUserFilter={applyUserFilter}
|
|
34
|
+
userFilterScope={userFilterScope}
|
|
33
35
|
deleteUserFilter={deleteUserFilter}
|
|
34
36
|
resetFilters={resetFilters}
|
|
35
37
|
selectedUserFilter={selectedUserFilter}
|
|
36
38
|
userFilters={userFilters}
|
|
39
|
+
disabled={loading}
|
|
37
40
|
/>
|
|
38
41
|
)}
|
|
39
42
|
<div className="selectedFilters">
|
|
@@ -74,6 +77,7 @@ export const SelectedFilters = ({
|
|
|
74
77
|
<ModalSaveFilter
|
|
75
78
|
saveFilters={saveFilters}
|
|
76
79
|
activeFilters={activeFilters}
|
|
80
|
+
scope={userFilterScope}
|
|
77
81
|
/>
|
|
78
82
|
)}
|
|
79
83
|
</>
|
|
@@ -100,6 +104,7 @@ SelectedFilters.propTypes = {
|
|
|
100
104
|
selectedUserFilter: PropTypes.string,
|
|
101
105
|
toggleFilterValue: PropTypes.func,
|
|
102
106
|
userFilters: PropTypes.array,
|
|
107
|
+
userFilterScope: PropTypes.string,
|
|
103
108
|
};
|
|
104
109
|
|
|
105
110
|
export default SelectedFilters;
|
|
@@ -8,67 +8,69 @@ import { ConfirmModal } from "./ConfirmModal";
|
|
|
8
8
|
export const UserFilters = ({
|
|
9
9
|
applyUserFilter,
|
|
10
10
|
deleteUserFilter,
|
|
11
|
+
disabled,
|
|
11
12
|
resetFilters,
|
|
12
13
|
selectedUserFilter,
|
|
13
14
|
userFilters,
|
|
15
|
+
userFilterScope,
|
|
14
16
|
}) => {
|
|
15
|
-
return (
|
|
16
|
-
|
|
17
|
-
{
|
|
18
|
-
<
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
17
|
+
return _.isEmpty(userFilters) ? null : (
|
|
18
|
+
<div className="selectedFilters">
|
|
19
|
+
{userFilters.map((userFilter, i) => (
|
|
20
|
+
<Label
|
|
21
|
+
basic={selectedUserFilter == userFilter.name ? false : true}
|
|
22
|
+
circular={true}
|
|
23
|
+
key={`label${userFilter.id}.${i}`}
|
|
24
|
+
>
|
|
25
|
+
<span
|
|
26
|
+
onClick={
|
|
27
|
+
disabled
|
|
28
|
+
? null
|
|
29
|
+
: (e) => {
|
|
30
|
+
e.preventDefault();
|
|
31
|
+
e.stopPropagation();
|
|
32
|
+
if (selectedUserFilter == userFilter.name) {
|
|
33
|
+
resetFilters();
|
|
34
|
+
} else {
|
|
35
|
+
applyUserFilter({ userFilter, scope: userFilterScope });
|
|
36
|
+
}
|
|
33
37
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
}
|
|
39
|
+
className="userFilter"
|
|
40
|
+
>
|
|
41
|
+
{userFilter.name}
|
|
42
|
+
</span>
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/>
|
|
64
|
-
}
|
|
65
|
-
onConfirm={() => deleteUserFilter({ id: userFilter.id })}
|
|
44
|
+
<ConfirmModal
|
|
45
|
+
icon="trash"
|
|
46
|
+
trigger={
|
|
47
|
+
<Icon
|
|
48
|
+
className="selectable"
|
|
49
|
+
color="grey"
|
|
50
|
+
size="small"
|
|
51
|
+
name="trash alternate outline"
|
|
52
|
+
/>
|
|
53
|
+
}
|
|
54
|
+
header={
|
|
55
|
+
<FormattedMessage id="search.filters.actions.delete.confirmation.header" />
|
|
56
|
+
}
|
|
57
|
+
content={
|
|
58
|
+
<FormattedMessage
|
|
59
|
+
id="search.filters.actions.delete.confirmation.content"
|
|
60
|
+
values={{
|
|
61
|
+
name: (
|
|
62
|
+
<b>
|
|
63
|
+
<i>{userFilter.name}</i>
|
|
64
|
+
</b>
|
|
65
|
+
),
|
|
66
|
+
}}
|
|
66
67
|
/>
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
}
|
|
69
|
+
onConfirm={() => deleteUserFilter({ id: userFilter.id })}
|
|
70
|
+
/>
|
|
71
|
+
</Label>
|
|
72
|
+
))}
|
|
73
|
+
</div>
|
|
72
74
|
);
|
|
73
75
|
};
|
|
74
76
|
|
|
@@ -78,6 +80,8 @@ UserFilters.propTypes = {
|
|
|
78
80
|
resetFilters: PropTypes.func,
|
|
79
81
|
selectedUserFilter: PropTypes.string,
|
|
80
82
|
userFilters: PropTypes.array,
|
|
83
|
+
disabled: PropTypes.bool,
|
|
84
|
+
userFilterScope: PropTypes.string,
|
|
81
85
|
};
|
|
82
86
|
|
|
83
87
|
export default UserFilters;
|
|
@@ -1,98 +1,96 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`<UserFilters /> matches the latest snapshot 1`] = `
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
<div
|
|
5
|
+
className="selectedFilters"
|
|
6
|
+
>
|
|
7
|
+
<Label
|
|
8
|
+
basic={true}
|
|
9
|
+
circular={true}
|
|
10
|
+
key="labelundefined.0"
|
|
7
11
|
>
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
key="labelundefined.0"
|
|
12
|
+
<span
|
|
13
|
+
className="userFilter"
|
|
14
|
+
onClick={[Function]}
|
|
12
15
|
>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<i>
|
|
27
|
-
a
|
|
28
|
-
</i>
|
|
29
|
-
</b>,
|
|
30
|
-
}
|
|
16
|
+
a
|
|
17
|
+
</span>
|
|
18
|
+
<ConfirmModal
|
|
19
|
+
content={
|
|
20
|
+
<Memo(MemoizedFormattedMessage)
|
|
21
|
+
id="search.filters.actions.delete.confirmation.content"
|
|
22
|
+
values={
|
|
23
|
+
Object {
|
|
24
|
+
"name": <b>
|
|
25
|
+
<i>
|
|
26
|
+
a
|
|
27
|
+
</i>
|
|
28
|
+
</b>,
|
|
31
29
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
30
|
+
}
|
|
31
|
+
/>
|
|
32
|
+
}
|
|
33
|
+
header={
|
|
34
|
+
<Memo(MemoizedFormattedMessage)
|
|
35
|
+
id="search.filters.actions.delete.confirmation.header"
|
|
36
|
+
/>
|
|
37
|
+
}
|
|
38
|
+
icon="trash"
|
|
39
|
+
onConfirm={[Function]}
|
|
40
|
+
trigger={
|
|
41
|
+
<Icon
|
|
42
|
+
as="i"
|
|
43
|
+
className="selectable"
|
|
44
|
+
color="grey"
|
|
45
|
+
name="trash alternate outline"
|
|
46
|
+
size="small"
|
|
47
|
+
/>
|
|
48
|
+
}
|
|
49
|
+
/>
|
|
50
|
+
</Label>
|
|
51
|
+
<Label
|
|
52
|
+
basic={true}
|
|
53
|
+
circular={true}
|
|
54
|
+
key="labelundefined.1"
|
|
55
|
+
>
|
|
56
|
+
<span
|
|
57
|
+
className="userFilter"
|
|
58
|
+
onClick={[Function]}
|
|
56
59
|
>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
<i>
|
|
71
|
-
b
|
|
72
|
-
</i>
|
|
73
|
-
</b>,
|
|
74
|
-
}
|
|
60
|
+
b
|
|
61
|
+
</span>
|
|
62
|
+
<ConfirmModal
|
|
63
|
+
content={
|
|
64
|
+
<Memo(MemoizedFormattedMessage)
|
|
65
|
+
id="search.filters.actions.delete.confirmation.content"
|
|
66
|
+
values={
|
|
67
|
+
Object {
|
|
68
|
+
"name": <b>
|
|
69
|
+
<i>
|
|
70
|
+
b
|
|
71
|
+
</i>
|
|
72
|
+
</b>,
|
|
75
73
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
</
|
|
97
|
-
</
|
|
74
|
+
}
|
|
75
|
+
/>
|
|
76
|
+
}
|
|
77
|
+
header={
|
|
78
|
+
<Memo(MemoizedFormattedMessage)
|
|
79
|
+
id="search.filters.actions.delete.confirmation.header"
|
|
80
|
+
/>
|
|
81
|
+
}
|
|
82
|
+
icon="trash"
|
|
83
|
+
onConfirm={[Function]}
|
|
84
|
+
trigger={
|
|
85
|
+
<Icon
|
|
86
|
+
as="i"
|
|
87
|
+
className="selectable"
|
|
88
|
+
color="grey"
|
|
89
|
+
name="trash alternate outline"
|
|
90
|
+
size="small"
|
|
91
|
+
/>
|
|
92
|
+
}
|
|
93
|
+
/>
|
|
94
|
+
</Label>
|
|
95
|
+
</div>
|
|
98
96
|
`;
|
package/src/services/filters.js
CHANGED
|
@@ -28,21 +28,17 @@ export const getSearchPayload = (searchQuery, props) => {
|
|
|
28
28
|
]);
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
export const formatFilterValues =
|
|
32
|
-
(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
_.map(_.omit(["parent_ids"]))
|
|
40
|
-
)(values);
|
|
41
|
-
return getDomainSelectorOptions({ domains });
|
|
42
|
-
}
|
|
31
|
+
export const formatFilterValues = (selectedFilter) => (values) => {
|
|
32
|
+
if (selectedFilter === "taxonomy") {
|
|
33
|
+
const domains = _.flow(
|
|
34
|
+
_.map((domain) => ({ ...domain, parent_id: _.head(domain.parent_ids) })),
|
|
35
|
+
_.map(_.omit(["parent_ids"]))
|
|
36
|
+
)(values);
|
|
37
|
+
return getDomainSelectorOptions({ domains });
|
|
38
|
+
}
|
|
43
39
|
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
return values;
|
|
41
|
+
};
|
|
46
42
|
|
|
47
43
|
export const toFilterValues = (filterValues) =>
|
|
48
44
|
_.map((v) => (_.isObject(v) ? v.id : v))(filterValues);
|