@truedat/core 4.37.1 → 4.37.5
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/routes.js +2 -0
- 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.5",
|
|
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": "98ff8669e99824ef1bdbd3d12035e6371029e4ca"
|
|
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/routes.js
CHANGED
|
@@ -85,6 +85,7 @@ export const ROLES_NEW = "/roles/new";
|
|
|
85
85
|
export const RULE = "/rules/:id";
|
|
86
86
|
export const RULES = "/rules";
|
|
87
87
|
export const RULE_EDIT = "/rules/:id/edit";
|
|
88
|
+
export const RULE_EVENTS = "/rules/:id/events";
|
|
88
89
|
export const RULE_IMPLEMENTATION =
|
|
89
90
|
"/rules/:id/implementations/:implementation_id";
|
|
90
91
|
export const RULE_IMPLEMENTATIONS = "/rules/:id/implementations";
|
|
@@ -233,6 +234,7 @@ const routes = {
|
|
|
233
234
|
ROLES_NEW,
|
|
234
235
|
ROLES,
|
|
235
236
|
RULE_EDIT,
|
|
237
|
+
RULE_EVENTS,
|
|
236
238
|
RULE_IMPLEMENTATION_EVENTS,
|
|
237
239
|
RULE_IMPLEMENTATION_CLONE,
|
|
238
240
|
RULE_IMPLEMENTATION_EDIT,
|
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);
|