@truedat/core 4.37.0 → 4.37.4

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 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.0",
3
+ "version": "4.37.4",
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": "a2584d116d738be9a237f26c617e1400d4a24803"
107
+ "gitHead": "d6a390c1a843d164c28cf7ae174126b6c0e24618"
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
- {!_.isEmpty(userFilters) && (
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
- {!_.isEmpty(userFilters) && (
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={(e) => {
27
- e.preventDefault();
28
- e.stopPropagation();
29
- if (selectedUserFilter == userFilter.name) {
30
- resetFilters();
31
- } else {
32
- applyUserFilter({ userFilter });
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
- className="userFilter"
36
- >
37
- {userFilter.name}
38
- </span>
38
+ }
39
+ className="userFilter"
40
+ >
41
+ {userFilter.name}
42
+ </span>
39
43
 
40
- <ConfirmModal
41
- icon="trash"
42
- trigger={
43
- <Icon
44
- className="selectable"
45
- color="grey"
46
- size="small"
47
- name="trash alternate outline"
48
- />
49
- }
50
- header={
51
- <FormattedMessage id="search.filters.actions.delete.confirmation.header" />
52
- }
53
- content={
54
- <FormattedMessage
55
- id="search.filters.actions.delete.confirmation.content"
56
- values={{
57
- name: (
58
- <b>
59
- <i>{userFilter.name}</i>
60
- </b>
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
- </Label>
68
- ))}
69
- </div>
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
- <Fragment>
5
- <div
6
- className="selectedFilters"
4
+ <div
5
+ className="selectedFilters"
6
+ >
7
+ <Label
8
+ basic={true}
9
+ circular={true}
10
+ key="labelundefined.0"
7
11
  >
8
- <Label
9
- basic={true}
10
- circular={true}
11
- key="labelundefined.0"
12
+ <span
13
+ className="userFilter"
14
+ onClick={[Function]}
12
15
  >
13
- <span
14
- className="userFilter"
15
- onClick={[Function]}
16
- >
17
- a
18
- </span>
19
- <ConfirmModal
20
- content={
21
- <Memo(MemoizedFormattedMessage)
22
- id="search.filters.actions.delete.confirmation.content"
23
- values={
24
- Object {
25
- "name": <b>
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
- header={
35
- <Memo(MemoizedFormattedMessage)
36
- id="search.filters.actions.delete.confirmation.header"
37
- />
38
- }
39
- icon="trash"
40
- onConfirm={[Function]}
41
- trigger={
42
- <Icon
43
- as="i"
44
- className="selectable"
45
- color="grey"
46
- name="trash alternate outline"
47
- size="small"
48
- />
49
- }
50
- />
51
- </Label>
52
- <Label
53
- basic={true}
54
- circular={true}
55
- key="labelundefined.1"
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
- <span
58
- className="userFilter"
59
- onClick={[Function]}
60
- >
61
- b
62
- </span>
63
- <ConfirmModal
64
- content={
65
- <Memo(MemoizedFormattedMessage)
66
- id="search.filters.actions.delete.confirmation.content"
67
- values={
68
- Object {
69
- "name": <b>
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
- header={
79
- <Memo(MemoizedFormattedMessage)
80
- id="search.filters.actions.delete.confirmation.header"
81
- />
82
- }
83
- icon="trash"
84
- onConfirm={[Function]}
85
- trigger={
86
- <Icon
87
- as="i"
88
- className="selectable"
89
- color="grey"
90
- name="trash alternate outline"
91
- size="small"
92
- />
93
- }
94
- />
95
- </Label>
96
- </div>
97
- </Fragment>
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,
@@ -28,21 +28,17 @@ export const getSearchPayload = (searchQuery, props) => {
28
28
  ]);
29
29
  };
30
30
 
31
- export const formatFilterValues =
32
- (implementationSelectedFilter) => (values) => {
33
- if (implementationSelectedFilter === "taxonomy") {
34
- const domains = _.flow(
35
- _.map((domain) => ({
36
- ...domain,
37
- parent_id: _.head(domain.parent_ids),
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
- return values;
45
- };
40
+ return values;
41
+ };
46
42
 
47
43
  export const toFilterValues = (filterValues) =>
48
44
  _.map((v) => (_.isObject(v) ? v.id : v))(filterValues);