@truedat/core 4.28.8 → 4.30.0

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,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.30.0] 2021-10-06
4
+
5
+ ### Changed
6
+
7
+ - [TD-3603] Update react-intl version to v5
8
+
9
+ ## [4.29.5] 2021-10-05
10
+
11
+ ### Changed
12
+
13
+ - [TD-4111] Extract grant routes
14
+
3
15
  ## [4.28.6] 2021-09-20
4
16
 
5
17
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truedat/core",
3
- "version": "4.28.8",
3
+ "version": "4.30.0",
4
4
  "description": "Truedat Web Core",
5
5
  "sideEffects": false,
6
6
  "jsnext:main": "src/index.js",
@@ -32,7 +32,7 @@
32
32
  "@babel/plugin-transform-modules-commonjs": "^7.15.0",
33
33
  "@babel/preset-env": "^7.15.0",
34
34
  "@babel/preset-react": "^7.14.5",
35
- "@truedat/test": "4.28.8",
35
+ "@truedat/test": "4.30.0",
36
36
  "babel-jest": "^27.0.6",
37
37
  "babel-plugin-dynamic-import-node": "^2.3.3",
38
38
  "babel-plugin-lodash": "^3.3.4",
@@ -87,7 +87,7 @@
87
87
  "is-url": "^1.2.4",
88
88
  "prop-types": "^15.7.2",
89
89
  "react-dropzone": "^4.2.13",
90
- "react-intl": "^3.12.0",
90
+ "react-intl": "^5.20.10",
91
91
  "react-moment": "^0.9.7",
92
92
  "react-redux": "^7.2.4",
93
93
  "react-router-dom": "^5.2.0",
@@ -103,5 +103,5 @@
103
103
  "react-dom": ">= 16.8.6 < 17",
104
104
  "semantic-ui-react": ">= 0.88.2 < 2.1"
105
105
  },
106
- "gitHead": "33a7f73dd4ffbd31d1df270c8453c3a876412990"
106
+ "gitHead": "43906b019b9b634bfbd6a25d24cd296f50e2842c"
107
107
  }
@@ -6,16 +6,10 @@ import {
6
6
  SYSTEMS,
7
7
  STRUCTURE_TAGS,
8
8
  STRUCTURE_TYPES,
9
- MY_GRANTS,
10
- GRANTS,
11
9
  } from "../routes";
12
10
  import Submenu from "./Submenu";
13
11
 
14
- const items = [
15
- { name: "structures", routes: [STRUCTURES, SYSTEMS] },
16
- { name: "my_grants", routes: [MY_GRANTS] },
17
- { name: "grants", routes: [GRANTS] },
18
- ];
12
+ const items = [{ name: "structures", routes: [STRUCTURES, SYSTEMS] }];
19
13
 
20
14
  const adminItems = [
21
15
  { name: "structure_types", routes: [STRUCTURE_TYPES] },
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import { useAuthorized } from "../hooks";
3
+ import { MY_GRANTS, GRANTS, MY_GRANT_REQUESTS } from "../routes";
4
+ import Submenu from "./Submenu";
5
+
6
+ const items = [
7
+ { name: "my_grants", routes: [MY_GRANTS] },
8
+ { name: "grants", routes: [GRANTS] },
9
+ // { name: "grant_requests", routes: [GRANT_REQUESTS] },
10
+ { name: "my_grant_requests", routes: [MY_GRANT_REQUESTS] },
11
+ ];
12
+
13
+ export const GrantMenu = () => {
14
+ const authorized = useAuthorized("data_dictionary");
15
+ return authorized ? <Submenu items={items} icon="key" name="grants" /> : null;
16
+ };
17
+
18
+ export default GrantMenu;
@@ -12,10 +12,11 @@ import QualityMenu from "./QualityMenu";
12
12
  import SearchMenu from "./SearchMenu";
13
13
  import SidebarToggle from "./SidebarToggle";
14
14
  import TaxonomyMenu from "./TaxonomyMenu";
15
+ import GrantMenu from "./GrantMenu";
15
16
  import MembersMenu from "./MembersMenu";
16
17
 
17
18
  export const SideMenu = ({ children, animation = "push", inverted }) => {
18
- const sidebarVisible = useSelector(state => state.sidebarVisible);
19
+ const sidebarVisible = useSelector((state) => state.sidebarVisible);
19
20
 
20
21
  const width = sidebarVisible ? null : "very thin";
21
22
 
@@ -33,6 +34,7 @@ export const SideMenu = ({ children, animation = "push", inverted }) => {
33
34
  <SearchMenu />
34
35
  <GlossaryMenu />
35
36
  <CatalogMenu />
37
+ <GrantMenu />
36
38
  <QualityMenu />
37
39
  <LineageMenu />
38
40
  <IngestMenu />
@@ -50,7 +52,7 @@ export const SideMenu = ({ children, animation = "push", inverted }) => {
50
52
  SideMenu.propTypes = {
51
53
  animation: PropTypes.string,
52
54
  children: PropTypes.node,
53
- inverted: PropTypes.bool
55
+ inverted: PropTypes.bool,
54
56
  };
55
57
 
56
58
  export default SideMenu;
@@ -4,7 +4,7 @@ import { CatalogMenu } from "../CatalogMenu";
4
4
 
5
5
  jest.mock("../../hooks", () => ({
6
6
  useActiveRoutes: jest.fn(() => true),
7
- useAuthorized: jest.fn(() => true)
7
+ useAuthorized: jest.fn(() => true),
8
8
  }));
9
9
 
10
10
  describe("<CatalogMenu />", () => {
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import { shallow } from "enzyme";
3
+ import { GrantMenu } from "../GrantMenu";
4
+
5
+ jest.mock("../../hooks", () => ({
6
+ useActiveRoutes: jest.fn(() => true),
7
+ useAuthorized: jest.fn(() => true),
8
+ }));
9
+
10
+ describe("<GrantMenu />", () => {
11
+ it("matches the latest snapshot", () => {
12
+ const wrapper = shallow(<GrantMenu />);
13
+ expect(wrapper).toMatchSnapshot();
14
+ });
15
+ });
@@ -29,10 +29,9 @@ exports[`<AvailableFilters/> matches the latest snapshot 1`] = `
29
29
  onClick={[MockFunction]}
30
30
  >
31
31
  <em>
32
- <FormattedMessage
32
+ <MemoizedFormattedMessage
33
33
  defaultMessage="(reset filters)"
34
34
  id="filters.reset"
35
- values={Object {}}
36
35
  />
37
36
  </em>
38
37
  </DropdownItem>
@@ -12,18 +12,6 @@ exports[`<CatalogMenu /> matches the latest snapshot 1`] = `
12
12
  "/systems",
13
13
  ],
14
14
  },
15
- Object {
16
- "name": "my_grants",
17
- "routes": Array [
18
- "/my_grants",
19
- ],
20
- },
21
- Object {
22
- "name": "grants",
23
- "routes": Array [
24
- "/grants",
25
- ],
26
- },
27
15
  Object {
28
16
  "name": "structure_types",
29
17
  "routes": Array [
@@ -23,10 +23,9 @@ exports[`<FilterDropdown/> matches the latest snapshot 1`] = `
23
23
  selectOnNavigation={true}
24
24
  trigger={
25
25
  <Label>
26
- <FormattedMessage
26
+ <Memo(MemoizedFormattedMessage)
27
27
  defaultMessage="foo"
28
28
  id="filters.foo"
29
- values={Object {}}
30
29
  />
31
30
  <Icon
32
31
  as="i"
@@ -17,9 +17,8 @@ exports[`<FilterItem/> matches the latest snapshot 1`] = `
17
17
  `;
18
18
 
19
19
  exports[`<FilterItem/> matches the latest snapshot 2`] = `
20
- <FormattedMessage
20
+ <MemoizedFormattedMessage
21
21
  defaultMessage="bar"
22
22
  id="filters.foo.bar"
23
- values={Object {}}
24
23
  />
25
24
  `;
@@ -0,0 +1,30 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<GrantMenu /> matches the latest snapshot 1`] = `
4
+ <Submenu
5
+ icon="key"
6
+ items={
7
+ Array [
8
+ Object {
9
+ "name": "my_grants",
10
+ "routes": Array [
11
+ "/my_grants",
12
+ ],
13
+ },
14
+ Object {
15
+ "name": "grants",
16
+ "routes": Array [
17
+ "/grants",
18
+ ],
19
+ },
20
+ Object {
21
+ "name": "my_grant_requests",
22
+ "routes": Array [
23
+ "/my_grant_requests",
24
+ ],
25
+ },
26
+ ]
27
+ }
28
+ name="grants"
29
+ />
30
+ `;
@@ -5,17 +5,15 @@ exports[`<ModalSaveFilter /> matches the latest snapshot 1`] = `
5
5
  actions={
6
6
  Array [
7
7
  Object {
8
- "content": <FormattedMessage
8
+ "content": <Memo(MemoizedFormattedMessage)
9
9
  id="search.save_filter.cancel"
10
- values={Object {}}
11
10
  />,
12
11
  "key": "no",
13
12
  "secondary": true,
14
13
  },
15
14
  Object {
16
- "content": <FormattedMessage
15
+ "content": <Memo(MemoizedFormattedMessage)
17
16
  id="search.save_filter.save"
18
- values={Object {}}
19
17
  />,
20
18
  "disabled": true,
21
19
  "key": "yes",
@@ -32,9 +30,8 @@ exports[`<ModalSaveFilter /> matches the latest snapshot 1`] = `
32
30
  }
33
31
  handleSubmit={[Function]}
34
32
  header={
35
- <FormattedMessage
33
+ <Memo(MemoizedFormattedMessage)
36
34
  id="search.filters.actions.save.confirmation.header"
37
- values={Object {}}
38
35
  />
39
36
  }
40
37
  icon="save"
@@ -42,9 +39,8 @@ exports[`<ModalSaveFilter /> matches the latest snapshot 1`] = `
42
39
  <a
43
40
  className="resetFilters"
44
41
  >
45
- <FormattedMessage
42
+ <Memo(MemoizedFormattedMessage)
46
43
  id="search.save_filters"
47
- values={Object {}}
48
44
  />
49
45
  </a>
50
46
  }
@@ -57,9 +53,8 @@ exports[`<SaveFilterForm /> matches the latest snapshot 1`] = `
57
53
  >
58
54
  <FormField>
59
55
  <label>
60
- <FormattedMessage
56
+ <MemoizedFormattedMessage
61
57
  id="search.saveFilterForm.filter_name"
62
- values={Object {}}
63
58
  />
64
59
  </label>
65
60
  <FormInput
@@ -18,9 +18,8 @@ exports[`<SelectedFilters/> matches the latest snapshot 1`] = `
18
18
  <div
19
19
  className="appliedFilters"
20
20
  >
21
- <FormattedMessage
21
+ <MemoizedFormattedMessage
22
22
  id="search.applied_filters"
23
- values={Object {}}
24
23
  />
25
24
  </div>
26
25
  <FilterDropdown
@@ -52,9 +51,8 @@ exports[`<SelectedFilters/> matches the latest snapshot 1`] = `
52
51
  className="resetFilters"
53
52
  onClick={[Function]}
54
53
  >
55
- <FormattedMessage
54
+ <MemoizedFormattedMessage
56
55
  id="search.clear_filters"
57
- values={Object {}}
58
56
  />
59
57
  </a>
60
58
  <ModalSaveFilter
@@ -15,6 +15,7 @@ exports[`<SideMenu /> matches the latest snapshot 1`] = `
15
15
  <SearchMenu />
16
16
  <GlossaryMenu />
17
17
  <CatalogMenu />
18
+ <GrantMenu />
18
19
  <QualityMenu />
19
20
  <LineageMenu />
20
21
  <IngestMenu />
@@ -14,9 +14,8 @@ exports[`<Submenu /> matches the latest snapshot 1`] = `
14
14
  as="i"
15
15
  size="large"
16
16
  />
17
- <FormattedMessage
17
+ <MemoizedFormattedMessage
18
18
  id="sidemenu.undefined"
19
- values={Object {}}
20
19
  />
21
20
  </Link>
22
21
  <MenuMenu>
@@ -18,7 +18,7 @@ exports[`<UserFilters /> matches the latest snapshot 1`] = `
18
18
  </span>
19
19
  <ConfirmModal
20
20
  content={
21
- <FormattedMessage
21
+ <Memo(MemoizedFormattedMessage)
22
22
  id="search.filters.actions.delete.confirmation.content"
23
23
  values={
24
24
  Object {
@@ -33,9 +33,8 @@ exports[`<UserFilters /> matches the latest snapshot 1`] = `
33
33
  }
34
34
  handleSubmit={[Function]}
35
35
  header={
36
- <FormattedMessage
36
+ <Memo(MemoizedFormattedMessage)
37
37
  id="search.filters.actions.delete.confirmation.header"
38
- values={Object {}}
39
38
  />
40
39
  }
41
40
  icon="trash"
@@ -63,7 +62,7 @@ exports[`<UserFilters /> matches the latest snapshot 1`] = `
63
62
  </span>
64
63
  <ConfirmModal
65
64
  content={
66
- <FormattedMessage
65
+ <Memo(MemoizedFormattedMessage)
67
66
  id="search.filters.actions.delete.confirmation.content"
68
67
  values={
69
68
  Object {
@@ -78,9 +77,8 @@ exports[`<UserFilters /> matches the latest snapshot 1`] = `
78
77
  }
79
78
  handleSubmit={[Function]}
80
79
  header={
81
- <FormattedMessage
80
+ <Memo(MemoizedFormattedMessage)
82
81
  id="search.filters.actions.delete.confirmation.header"
83
- values={Object {}}
84
82
  />
85
83
  }
86
84
  icon="trash"
@@ -73,13 +73,15 @@ export default {
73
73
  "sidemenu.configurations": "Configuration",
74
74
  "sidemenu.dashboard": "Dashboard",
75
75
  "sidemenu.glossary": "Glossary",
76
+ "sidemenu.grant_requests": "Grant Requests",
76
77
  "sidemenu.grants": "Grants",
77
78
  "sidemenu.hide": "Collapse sidebar",
78
79
  "sidemenu.ingests": "Data Requests",
79
80
  "sidemenu.implementations": "Implementations",
80
81
  "sidemenu.jobs": "Jobs",
81
82
  "sidemenu.lineage": "Lineage Analysis",
82
- "sidemenu.my_grants": "My grants",
83
+ "sidemenu.my_grant_requests": "My Grant Requests",
84
+ "sidemenu.my_grants": "My Grants",
83
85
  "sidemenu.quality": "Data Quality",
84
86
  "sidemenu.quality_dashboard": "Quality Dashboard",
85
87
  "sidemenu.roles": "Roles",
@@ -76,6 +76,7 @@ export default {
76
76
  "sidemenu.configurations": "Configuración",
77
77
  "sidemenu.dashboard": "Dashboard",
78
78
  "sidemenu.glossary": "Glosario",
79
+ "sidemenu.grant_requests": "Peticiones de Accesos",
79
80
  "sidemenu.grants": "Accesos",
80
81
  "sidemenu.hide": "Ocultar",
81
82
  "sidemenu.implementations": "Implementaciones",
@@ -83,6 +84,7 @@ export default {
83
84
  "sidemenu.jobs": "Jobs",
84
85
  "sidemenu.lineage": "Linaje",
85
86
  "sidemenu.my_grants": "Mis accesos",
87
+ "sidemenu.my_grant_requests": "Mis Peticiones de Accesos",
86
88
  "sidemenu.quality": "Calidad",
87
89
  "sidemenu.quality_dashboard": "Dashboard de Calidad",
88
90
  "sidemenu.roles": "Roles",
package/src/routes.js CHANGED
@@ -40,6 +40,9 @@ export const DOMAIN_MEMBERS = "/domains/:id/members";
40
40
  export const DOMAIN_MEMBERS_NEW = "/domains/:id/members/new";
41
41
  export const DOMAIN_NEW = "/domains/:id/new";
42
42
  export const EXECUTION_GROUP = "/executionGroups/:id";
43
+ export const GRANT_REQUESTS = "/grant_requests";
44
+ export const GRANT_REQUEST = "/grant_requests/:id";
45
+
43
46
  export const GRANTS = "/grants";
44
47
  export const GRANTS_REQUESTS_CHECKOUT = "/grants_requests/checkout";
45
48
  export const GRAPH = "/graphs/:id";
@@ -67,6 +70,7 @@ export const INGEST_RELATIONS_STRUCTURES_NEW =
67
70
  export const JOB = "/jobs/:id";
68
71
  export const JOBS = "/jobs";
69
72
  export const LOGIN = "/login";
73
+ export const MY_GRANT_REQUESTS = "/my_grant_requests";
70
74
  export const MY_GRANTS = "/my_grants";
71
75
  export const PASSWORD = "/password";
72
76
  export const PROFILE_EXECUTION =
@@ -182,6 +186,8 @@ const routes = {
182
186
  DOMAINS_SEARCH,
183
187
  DOMAINS,
184
188
  EXECUTION_GROUP,
189
+ GRANT_REQUEST,
190
+ GRANT_REQUESTS,
185
191
  GRANTS,
186
192
  GRANTS_REQUESTS_CHECKOUT,
187
193
  GRAPH,
@@ -207,6 +213,7 @@ const routes = {
207
213
  JOB,
208
214
  JOBS,
209
215
  LOGIN,
216
+ MY_GRANT_REQUESTS,
210
217
  MY_GRANTS,
211
218
  PASSWORD,
212
219
  PROFILE_EXECUTION,