@truedat/core 6.14.0 → 6.14.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.
Files changed (28) hide show
  1. package/package.json +3 -3
  2. package/src/components/AdminMenu.js +7 -1
  3. package/src/components/AiMenu.js +7 -6
  4. package/src/components/CatalogMenu.js +5 -1
  5. package/src/components/DashboardMenu.js +7 -1
  6. package/src/components/GlossaryMenu.js +7 -1
  7. package/src/components/GrantMenu.js +9 -1
  8. package/src/components/IngestMenu.js +7 -1
  9. package/src/components/LineageMenu.js +7 -1
  10. package/src/components/MembersMenu.js +7 -1
  11. package/src/components/QualityMenu.js +7 -1
  12. package/src/components/QxMenu.js +7 -1
  13. package/src/components/SearchMenu.js +9 -3
  14. package/src/components/TaxonomyMenu.js +7 -1
  15. package/src/components/__tests__/GrantMenu.spec.js +5 -4
  16. package/src/components/__tests__/IngestMenu.spec.js +5 -4
  17. package/src/components/__tests__/LineageMenu.spec.js +7 -6
  18. package/src/components/__tests__/MembersMenu.spec.js +5 -4
  19. package/src/components/__tests__/SearchMenu.spec.js +5 -4
  20. package/src/components/__tests__/TaxonomyMenu.spec.js +6 -5
  21. package/src/components/__tests__/__snapshots__/GrantMenu.spec.js.snap +112 -62
  22. package/src/components/__tests__/__snapshots__/IngestMenu.spec.js.snap +39 -14
  23. package/src/components/__tests__/__snapshots__/LineageMenu.spec.js.snap +60 -20
  24. package/src/components/__tests__/__snapshots__/MembersMenu.spec.js.snap +60 -21
  25. package/src/components/__tests__/__snapshots__/SearchMenu.spec.js.snap +39 -14
  26. package/src/components/__tests__/__snapshots__/TaxonomyMenu.spec.js.snap +39 -14
  27. package/src/i18n/components/Messages.js +7 -1
  28. package/src/i18n/components/NewMessage.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truedat/core",
3
- "version": "6.14.0",
3
+ "version": "6.14.1",
4
4
  "description": "Truedat Web Core",
5
5
  "sideEffects": false,
6
6
  "jsnext:main": "src/index.js",
@@ -36,7 +36,7 @@
36
36
  "@testing-library/react": "^12.0.0",
37
37
  "@testing-library/react-hooks": "^8.0.1",
38
38
  "@testing-library/user-event": "^13.2.1",
39
- "@truedat/test": "6.8.6",
39
+ "@truedat/test": "6.14.1",
40
40
  "babel-jest": "^28.1.0",
41
41
  "babel-plugin-dynamic-import-node": "^2.3.3",
42
42
  "babel-plugin-lodash": "^3.3.4",
@@ -118,5 +118,5 @@
118
118
  "react-dom": ">= 16.8.6 < 17",
119
119
  "semantic-ui-react": ">= 2.0.3 < 2.2"
120
120
  },
121
- "gitHead": "c93d6ae539fb9ecb3d43b63db5199726246d2024"
121
+ "gitHead": "13f8e92c333acf539f9978ea94db03174130cfb0"
122
122
  }
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import {
4
5
  CONFIGURATIONS,
@@ -28,9 +29,14 @@ const items = [
28
29
  ];
29
30
 
30
31
  export const AdminMenu = () => {
32
+ const { formatMessage } = useIntl();
33
+ const iconAdmin = formatMessage({
34
+ id: "sidemenu.admin.icon",
35
+ defaultMessage: "setting",
36
+ });
31
37
  const authorized = useAuthorized();
32
38
  return authorized ? (
33
- <Submenu items={items} icon="setting" name="admin" />
39
+ <Submenu items={items} icon={iconAdmin} name="admin" />
34
40
  ) : null;
35
41
  };
36
42
 
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import {
4
5
  ACTIONS,
@@ -18,13 +19,13 @@ export const ITEMS = [
18
19
  ];
19
20
 
20
21
  export default function AiMenu() {
22
+ const { formatMessage } = useIntl();
23
+ const iconAi = formatMessage({
24
+ id: "sidemenu.ai.icon",
25
+ defaultMessage: "lightbulb outline",
26
+ });
21
27
  const authorized = useAuthorized("manage_ai");
22
-
23
28
  return authorized ? (
24
- <Submenu
25
- items={ITEMS}
26
- icon="lightbulb outline"
27
- name="artificial_intelligence"
28
- />
29
+ <Submenu items={ITEMS} icon={iconAi} name="artificial_intelligence" />
29
30
  ) : null;
30
31
  }
@@ -53,6 +53,10 @@ export const CatalogMenu = ({ catalogViewConfigs }) => {
53
53
  "data_dictionary_structure_notes"
54
54
  );
55
55
  const { formatMessage } = useIntl();
56
+ const iconCatalog = formatMessage({
57
+ id: "sidemenu.catalog.icon",
58
+ defaultMessage: "block layout",
59
+ });
56
60
  const submenuItems = [
57
61
  { name: "structures", routes: [STRUCTURES, SYSTEMS] },
58
62
  ...catalogViewConfigItems(formatMessage)(catalogViewConfigs),
@@ -63,7 +67,7 @@ export const CatalogMenu = ({ catalogViewConfigs }) => {
63
67
 
64
68
  const authorized = useAuthorized("data_dictionary");
65
69
  return authorized ? (
66
- <Submenu items={submenuItems} icon="block layout" name="catalog" />
70
+ <Submenu items={submenuItems} icon={iconCatalog} name="catalog" />
67
71
  ) : null;
68
72
  };
69
73
 
@@ -2,6 +2,7 @@ import _ from "lodash/fp";
2
2
  import React from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { connect } from "react-redux";
5
+ import { useIntl } from "react-intl";
5
6
  import { DASHBOARD } from "@truedat/core/routes";
6
7
  import { getDashboardConfig } from "../selectors";
7
8
  import { useAuthorized } from "../hooks";
@@ -10,10 +11,15 @@ import Submenu from "./Submenu";
10
11
  const items = [{ name: "dashboard", routes: [DASHBOARD] }];
11
12
 
12
13
  export const DashboardMenu = ({ dashboardConfig }) => {
14
+ const { formatMessage } = useIntl();
15
+ const iconDashboards = formatMessage({
16
+ id: "sidemenu.dashboards.icon",
17
+ defaultMessage: "chart line",
18
+ });
13
19
  const authorized = useAuthorized("dashboards");
14
20
 
15
21
  return authorized && !_.isEmpty(dashboardConfig) ? (
16
- <Submenu items={items} icon="chart line" name="dashboard" />
22
+ <Submenu items={items} icon={iconDashboards} name="dashboard" />
17
23
  ) : (
18
24
  false
19
25
  );
@@ -5,6 +5,7 @@ import { connect } from "react-redux";
5
5
  import PropTypes from "prop-types";
6
6
  import { makeGetSubscopes } from "@truedat/df/selectors/subscopedTemplates";
7
7
  import { linkTo } from "@truedat/core/routes";
8
+ import { useIntl } from "react-intl";
8
9
  import { useAuthorized } from "../hooks";
9
10
  import {
10
11
  CONCEPTS,
@@ -54,6 +55,11 @@ const subscopeItems = _.flow(
54
55
  );
55
56
 
56
57
  export const GlossaryMenu = ({ bgSubscopes }) => {
58
+ const { formatMessage } = useIntl();
59
+ const iconGlossary = formatMessage({
60
+ id: "sidemenu.glossary.icon",
61
+ defaultMessage: "tags",
62
+ });
57
63
  const authorized = useAuthorized([
58
64
  "business_glossary_view",
59
65
  "business_glossary_management",
@@ -68,7 +74,7 @@ export const GlossaryMenu = ({ bgSubscopes }) => {
68
74
  <TemplatesLoader />
69
75
  <Submenu
70
76
  items={items(subscopeItems(bgSubscopes))}
71
- icon="tags"
77
+ icon={iconGlossary}
72
78
  name="glossary"
73
79
  />
74
80
  </>
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import {
4
5
  GRANT_REQUESTS,
@@ -36,12 +37,19 @@ const items = [
36
37
  ];
37
38
 
38
39
  export const GrantMenu = () => {
40
+ const { formatMessage } = useIntl();
41
+ const iconGrants = formatMessage({
42
+ id: "sidemenu.grants.icon",
43
+ defaultMessage: "key",
44
+ });
39
45
  const authorized = useAuthorized([
40
46
  "grants",
41
47
  "grants_management",
42
48
  "grants_visualization",
43
49
  ]);
44
- return authorized ? <Submenu items={items} icon="key" name="grants" /> : null;
50
+ return authorized ? (
51
+ <Submenu items={items} icon={iconGrants} name="grants" />
52
+ ) : null;
45
53
  };
46
54
 
47
55
  export default GrantMenu;
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import { INGESTS } from "../routes";
4
5
  import Submenu from "./Submenu";
@@ -6,9 +7,14 @@ import Submenu from "./Submenu";
6
7
  const items = [{ name: "ingests", routes: [INGESTS] }];
7
8
 
8
9
  export const IngestMenu = () => {
10
+ const { formatMessage } = useIntl();
11
+ const iconIngest = formatMessage({
12
+ id: "sidemenu.ingest.icon",
13
+ defaultMessage: "hdd outline",
14
+ });
9
15
  const authorized = useAuthorized("ingests");
10
16
  return authorized ? (
11
- <Submenu items={items} icon="hdd outline" name="ingests" />
17
+ <Submenu items={items} icon={iconIngest} name="ingests" />
12
18
  ) : (
13
19
  false
14
20
  );
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import { GRAPHS, LINEAGE_EVENTS } from "../routes";
4
5
  import Submenu from "./Submenu";
@@ -9,9 +10,14 @@ const items = [
9
10
  ];
10
11
 
11
12
  export const LineageMenu = () => {
13
+ const { formatMessage } = useIntl();
14
+ const iconLineage = formatMessage({
15
+ id: "sidemenu.lineage.icon",
16
+ defaultMessage: "shuffle",
17
+ });
12
18
  const authorized = useAuthorized("lineage");
13
19
  return authorized ? (
14
- <Submenu items={items} icon="shuffle" name="lineage" />
20
+ <Submenu items={items} icon={iconLineage} name="lineage" />
15
21
  ) : (
16
22
  false
17
23
  );
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import { GROUPS, ROLES, USERS } from "../routes";
4
5
  import Submenu from "./Submenu";
@@ -9,9 +10,14 @@ const items = [
9
10
  ];
10
11
 
11
12
  export const MembersMenu = () => {
13
+ const { formatMessage } = useIntl();
14
+ const iconMembers = formatMessage({
15
+ id: "sidemenu.members.icon",
16
+ defaultMessage: "users",
17
+ });
12
18
  const authorized = useAuthorized();
13
19
  return authorized ? (
14
- <Submenu items={items} icon="users" name="members" />
20
+ <Submenu items={items} icon={iconMembers} name="members" />
15
21
  ) : null;
16
22
  };
17
23
 
@@ -2,6 +2,7 @@ import _ from "lodash/fp";
2
2
  import React from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { connect } from "react-redux";
5
+ import { useIntl } from "react-intl";
5
6
  import { useAuthorized } from "../hooks";
6
7
  import {
7
8
  EXECUTION_GROUPS,
@@ -40,6 +41,11 @@ export const ITEMS = [
40
41
  ];
41
42
 
42
43
  export const QualityMenu = ({ dashboardConfig }) => {
44
+ const { formatMessage } = useIntl();
45
+ const iconQuality = formatMessage({
46
+ id: "sidemenu.quality.icon",
47
+ defaultMessage: "check square",
48
+ });
43
49
  const authorized = useAuthorized(
44
50
  "quality",
45
51
  "quality_implementation_workflow_management",
@@ -51,7 +57,7 @@ export const QualityMenu = ({ dashboardConfig }) => {
51
57
  )(ITEMS);
52
58
 
53
59
  return authorized ? (
54
- <Submenu items={filteredItems} icon="check square" name="quality" />
60
+ <Submenu items={filteredItems} icon={iconQuality} name="quality" />
55
61
  ) : null;
56
62
  };
57
63
 
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import {
4
5
  DATA_VIEWS,
@@ -26,9 +27,14 @@ export const ITEMS = [
26
27
  ];
27
28
 
28
29
  export default function QxMenu() {
30
+ const { formatMessage } = useIntl();
31
+ const iconQx = formatMessage({
32
+ id: "sidemenu.qx.icon",
33
+ defaultMessage: "weight",
34
+ });
29
35
  const authorized = useAuthorized("quality_control");
30
36
 
31
37
  return authorized ? (
32
- <Submenu items={ITEMS} icon="weight" name="quality_experience" />
38
+ <Submenu items={ITEMS} icon={iconQx} name="quality_experience" />
33
39
  ) : null;
34
40
  }
@@ -1,11 +1,17 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { SEARCH } from "../routes";
3
4
  import Submenu from "./Submenu";
4
5
 
5
6
  const items = [{ name: "search", routes: [SEARCH] }];
6
7
 
7
- export const SearchMenu = () => (
8
- <Submenu items={items} icon="search" name="search" />
9
- );
8
+ export const SearchMenu = () => {
9
+ const { formatMessage } = useIntl();
10
+ const iconSearch = formatMessage({
11
+ id: "sidemenu.search.icon",
12
+ defaultMessage: "search",
13
+ });
14
+ return <Submenu items={items} icon={iconSearch} name="search" />;
15
+ };
10
16
 
11
17
  export default SearchMenu;
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { useIntl } from "react-intl";
2
3
  import { useAuthorized } from "../hooks";
3
4
  import { DOMAINS } from "../routes";
4
5
  import Submenu from "./Submenu";
@@ -6,9 +7,14 @@ import Submenu from "./Submenu";
6
7
  const items = [{ name: "taxonomy", routes: [DOMAINS] }];
7
8
 
8
9
  export const TaxonomyMenu = () => {
10
+ const { formatMessage } = useIntl();
11
+ const iconTaxonomy = formatMessage({
12
+ id: "sidemenu.taxonomy.icon",
13
+ defaultMessage: "sitemap",
14
+ });
9
15
  const authorized = useAuthorized(["taxonomy", "taxonomy_membership"]);
10
16
  return authorized ? (
11
- <Submenu items={items} icon="sitemap" name="taxonomy" />
17
+ <Submenu items={items} icon={iconTaxonomy} name="taxonomy" />
12
18
  ) : (
13
19
  false
14
20
  );
@@ -1,15 +1,16 @@
1
1
  import React from "react";
2
- import { shallow } from "enzyme";
3
- import { GrantMenu } from "../GrantMenu";
2
+ import { render } from "@truedat/test/render";
3
+ import GrantMenu from "../GrantMenu";
4
4
 
5
5
  jest.mock("../../hooks", () => ({
6
6
  useActiveRoutes: jest.fn(() => true),
7
7
  useAuthorized: jest.fn(() => true),
8
+ useAuthorizedItems: jest.fn((items) => items),
8
9
  }));
9
10
 
10
11
  describe("<GrantMenu />", () => {
11
12
  it("matches the latest snapshot", () => {
12
- const wrapper = shallow(<GrantMenu />);
13
- expect(wrapper).toMatchSnapshot();
13
+ const { container } = render(<GrantMenu />);
14
+ expect(container).toMatchSnapshot();
14
15
  });
15
16
  });
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
- import { shallow } from "enzyme";
2
+ import { render } from "@truedat/test/render";
3
3
  import { IngestMenu } from "../IngestMenu";
4
4
 
5
5
  jest.mock("../../hooks", () => ({
6
6
  useActiveRoutes: jest.fn(() => true),
7
- useAuthorized: jest.fn(() => true)
7
+ useAuthorized: jest.fn(() => true),
8
+ useAuthorizedItems: jest.fn((items) => items),
8
9
  }));
9
10
 
10
11
  describe("<IngestMenu />", () => {
@@ -12,7 +13,7 @@ describe("<IngestMenu />", () => {
12
13
  const props = { location };
13
14
 
14
15
  it("matches the latest snapshot", () => {
15
- const wrapper = shallow(<IngestMenu {...props} />);
16
- expect(wrapper).toMatchSnapshot();
16
+ const { container } = render(<IngestMenu {...props} />);
17
+ expect(container).toMatchSnapshot();
17
18
  });
18
19
  });
@@ -1,18 +1,19 @@
1
1
  import React from "react";
2
- import { shallow } from "enzyme";
3
- import { LineageMenu } from "../LineageMenu";
2
+ import { render } from "@truedat/test/render";
3
+ import LineageMenu from "../LineageMenu";
4
4
 
5
5
  jest.mock("../../hooks", () => ({
6
6
  useActiveRoutes: jest.fn(() => true),
7
- useAuthorized: jest.fn(() => true)
7
+ useAuthorized: jest.fn(() => true),
8
+ useAuthorizedItems: jest.fn((items) => items),
8
9
  }));
9
10
 
10
11
  describe("<LineageMenu />", () => {
11
12
  const props = {
12
- nested: false
13
+ nested: false,
13
14
  };
14
15
  it("matches the latest snapshot", () => {
15
- const wrapper = shallow(<LineageMenu {...props} />);
16
- expect(wrapper).toMatchSnapshot();
16
+ const { container } = render(<LineageMenu {...props} />);
17
+ expect(container).toMatchSnapshot();
17
18
  });
18
19
  });
@@ -1,15 +1,16 @@
1
1
  import React from "react";
2
- import { shallow } from "enzyme";
2
+ import { render } from "@truedat/test/render";
3
3
  import { MembersMenu } from "../MembersMenu";
4
4
 
5
5
  jest.mock("../../hooks", () => ({
6
6
  useActiveRoutes: jest.fn(() => true),
7
- useAuthorized: jest.fn(() => true)
7
+ useAuthorized: jest.fn(() => true),
8
+ useAuthorizedItems: jest.fn((items) => items),
8
9
  }));
9
10
 
10
11
  describe("<MembersMenu />", () => {
11
12
  it("matches the latest snapshot", () => {
12
- const wrapper = shallow(<MembersMenu />);
13
- expect(wrapper).toMatchSnapshot();
13
+ const { container } = render(<MembersMenu />);
14
+ expect(container).toMatchSnapshot();
14
15
  });
15
16
  });
@@ -1,16 +1,17 @@
1
1
  import React from "react";
2
- import { shallow } from "enzyme";
2
+ import { render } from "@truedat/test/render";
3
3
  import { SearchMenu } from "../SearchMenu";
4
4
 
5
5
  jest.mock("../../hooks", () => ({
6
6
  useActiveRoutes: jest.fn(() => true),
7
- useAuthorized: jest.fn(() => true)
7
+ useAuthorized: jest.fn(() => true),
8
+ useAuthorizedItems: jest.fn((items) => items),
8
9
  }));
9
10
 
10
11
  describe("<SearchMenu />", () => {
11
12
  it("matches the latest snapshot", () => {
12
13
  const props = { nested: false };
13
- const wrapper = shallow(<SearchMenu {...props} />);
14
- expect(wrapper).toMatchSnapshot();
14
+ const { container } = render(<SearchMenu {...props} />);
15
+ expect(container).toMatchSnapshot();
15
16
  });
16
17
  });
@@ -1,15 +1,16 @@
1
1
  import React from "react";
2
- import { shallow } from "enzyme";
3
- import { TaxonomyMenu } from "../TaxonomyMenu";
2
+ import { render } from "@truedat/test/render";
3
+ import TaxonomyMenu from "../TaxonomyMenu";
4
4
 
5
5
  jest.mock("../../hooks", () => ({
6
6
  useActiveRoutes: jest.fn(() => true),
7
- useAuthorized: jest.fn(() => true)
7
+ useAuthorized: jest.fn(() => true),
8
+ useAuthorizedItems: jest.fn((items) => items),
8
9
  }));
9
10
 
10
11
  describe("<TaxonomyMenu />", () => {
11
12
  it("matches the latest snapshot", () => {
12
- const wrapper = shallow(<TaxonomyMenu />);
13
- expect(wrapper).toMatchSnapshot();
13
+ const { container } = render(<TaxonomyMenu />);
14
+ expect(container).toMatchSnapshot();
14
15
  });
15
16
  });
@@ -1,66 +1,116 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<GrantMenu /> matches the latest snapshot 1`] = `
4
- <Connect(Submenu)
5
- icon="key"
6
- items={
7
- [
8
- {
9
- "groups": [
10
- "grants",
11
- ],
12
- "name": "my_grants",
13
- "routes": [
14
- "/myGrants",
15
- ],
16
- },
17
- {
18
- "groups": [
19
- "grants_visualization",
20
- ],
21
- "name": "grants",
22
- "routes": [
23
- "/grants",
24
- ],
25
- },
26
- {
27
- "groups": [
28
- "grants",
29
- ],
30
- "name": "structures_grant_requests",
31
- "routes": [
32
- "/structuresGrantRequests",
33
- ],
34
- },
35
- {
36
- "groups": [
37
- "grants",
38
- ],
39
- "name": "my_grant_requests",
40
- "routes": [
41
- "/myGrantRequests",
42
- ],
43
- },
44
- {
45
- "groups": [
46
- "grants_management",
47
- ],
48
- "name": "grant_request_approvals",
49
- "routes": [
50
- "/grantRequests",
51
- ],
52
- },
53
- {
54
- "groups": [
55
- "grants_management",
56
- ],
57
- "name": "grant_approval_rules",
58
- "routes": [
59
- "/grantApprovalRules",
60
- ],
61
- },
62
- ]
63
- }
64
- name="grants"
65
- />
4
+ <div>
5
+ <div
6
+ class="active"
7
+ >
8
+ <div
9
+ aria-expanded="false"
10
+ class="ui item dropdown active"
11
+ role="listbox"
12
+ tabindex="0"
13
+ >
14
+ <a
15
+ class="ui"
16
+ href="/myGrants"
17
+ >
18
+ <i
19
+ aria-hidden="true"
20
+ class="key large icon"
21
+ />
22
+ </a>
23
+ <div
24
+ class="menu transition"
25
+ >
26
+ <div
27
+ class="header selectable"
28
+ >
29
+ Grants
30
+ </div>
31
+ <div
32
+ class="divider"
33
+ />
34
+ <a
35
+ aria-checked="false"
36
+ class="item"
37
+ href="/myGrants"
38
+ name="my_grants"
39
+ role="option"
40
+ >
41
+ <span
42
+ class="text"
43
+ >
44
+ My Grants
45
+ </span>
46
+ </a>
47
+ <a
48
+ aria-checked="false"
49
+ class="item"
50
+ href="/grants"
51
+ name="grants"
52
+ role="option"
53
+ >
54
+ <span
55
+ class="text"
56
+ >
57
+ Grants
58
+ </span>
59
+ </a>
60
+ <a
61
+ aria-checked="false"
62
+ class="item"
63
+ href="/structuresGrantRequests"
64
+ name="structures_grant_requests"
65
+ role="option"
66
+ >
67
+ <span
68
+ class="text"
69
+ >
70
+ Structures grant requests
71
+ </span>
72
+ </a>
73
+ <a
74
+ aria-checked="false"
75
+ class="item"
76
+ href="/myGrantRequests"
77
+ name="my_grant_requests"
78
+ role="option"
79
+ >
80
+ <span
81
+ class="text"
82
+ >
83
+ My Grant Requests
84
+ </span>
85
+ </a>
86
+ <a
87
+ aria-checked="false"
88
+ class="item"
89
+ href="/grantRequests"
90
+ name="grant_request_approvals"
91
+ role="option"
92
+ >
93
+ <span
94
+ class="text"
95
+ >
96
+ Approve Grant Requests
97
+ </span>
98
+ </a>
99
+ <a
100
+ aria-checked="false"
101
+ class="item"
102
+ href="/grantApprovalRules"
103
+ name="grant_approval_rules"
104
+ role="option"
105
+ >
106
+ <span
107
+ class="text"
108
+ >
109
+ Approval Rules
110
+ </span>
111
+ </a>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
66
116
  `;
@@ -1,18 +1,43 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<IngestMenu /> matches the latest snapshot 1`] = `
4
- <Connect(Submenu)
5
- icon="hdd outline"
6
- items={
7
- [
8
- {
9
- "name": "ingests",
10
- "routes": [
11
- "/ingests",
12
- ],
13
- },
14
- ]
15
- }
16
- name="ingests"
17
- />
4
+ <div>
5
+ <div
6
+ class="active"
7
+ >
8
+ <div
9
+ aria-expanded="false"
10
+ class="ui item dropdown active"
11
+ role="listbox"
12
+ tabindex="0"
13
+ >
14
+ <a
15
+ class="ui"
16
+ href="/ingests"
17
+ >
18
+ <i
19
+ aria-hidden="true"
20
+ class="hdd outline large icon"
21
+ />
22
+ </a>
23
+ <div
24
+ class="menu transition"
25
+ >
26
+ <a
27
+ aria-checked="false"
28
+ class="item"
29
+ href="/ingests"
30
+ name="ingests"
31
+ role="option"
32
+ >
33
+ <span
34
+ class="text"
35
+ >
36
+ Data Requests
37
+ </span>
38
+ </a>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
18
43
  `;
@@ -1,24 +1,64 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<LineageMenu /> matches the latest snapshot 1`] = `
4
- <Connect(Submenu)
5
- icon="shuffle"
6
- items={
7
- [
8
- {
9
- "name": "lineage",
10
- "routes": [
11
- "/graphs",
12
- ],
13
- },
14
- {
15
- "name": "lineage_events",
16
- "routes": [
17
- "/lineageEvents",
18
- ],
19
- },
20
- ]
21
- }
22
- name="lineage"
23
- />
4
+ <div>
5
+ <div
6
+ class="active"
7
+ >
8
+ <div
9
+ aria-expanded="false"
10
+ class="ui item dropdown active"
11
+ role="listbox"
12
+ tabindex="0"
13
+ >
14
+ <a
15
+ class="ui"
16
+ href="/graphs"
17
+ >
18
+ <i
19
+ aria-hidden="true"
20
+ class="shuffle large icon"
21
+ />
22
+ </a>
23
+ <div
24
+ class="menu transition"
25
+ >
26
+ <div
27
+ class="header selectable"
28
+ >
29
+ Lineage Analysis
30
+ </div>
31
+ <div
32
+ class="divider"
33
+ />
34
+ <a
35
+ aria-checked="false"
36
+ class="item"
37
+ href="/graphs"
38
+ name="lineage"
39
+ role="option"
40
+ >
41
+ <span
42
+ class="text"
43
+ >
44
+ Lineage Analysis
45
+ </span>
46
+ </a>
47
+ <a
48
+ aria-checked="false"
49
+ class="item"
50
+ href="/lineageEvents"
51
+ name="lineage_events"
52
+ role="option"
53
+ >
54
+ <span
55
+ class="text"
56
+ >
57
+ My graphs
58
+ </span>
59
+ </a>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </div>
24
64
  `;
@@ -1,25 +1,64 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<MembersMenu /> matches the latest snapshot 1`] = `
4
- <Connect(Submenu)
5
- icon="users"
6
- items={
7
- [
8
- {
9
- "name": "users",
10
- "routes": [
11
- "/users",
12
- "/groups",
13
- ],
14
- },
15
- {
16
- "name": "roles",
17
- "routes": [
18
- "/roles",
19
- ],
20
- },
21
- ]
22
- }
23
- name="members"
24
- />
4
+ <div>
5
+ <div
6
+ class="active"
7
+ >
8
+ <div
9
+ aria-expanded="false"
10
+ class="ui item dropdown active"
11
+ role="listbox"
12
+ tabindex="0"
13
+ >
14
+ <a
15
+ class="ui"
16
+ href="/users"
17
+ >
18
+ <i
19
+ aria-hidden="true"
20
+ class="users large icon"
21
+ />
22
+ </a>
23
+ <div
24
+ class="menu transition"
25
+ >
26
+ <div
27
+ class="header selectable"
28
+ >
29
+ Members
30
+ </div>
31
+ <div
32
+ class="divider"
33
+ />
34
+ <a
35
+ aria-checked="false"
36
+ class="item"
37
+ href="/users"
38
+ name="users"
39
+ role="option"
40
+ >
41
+ <span
42
+ class="text"
43
+ >
44
+ Users
45
+ </span>
46
+ </a>
47
+ <a
48
+ aria-checked="false"
49
+ class="item"
50
+ href="/roles"
51
+ name="roles"
52
+ role="option"
53
+ >
54
+ <span
55
+ class="text"
56
+ >
57
+ Roles
58
+ </span>
59
+ </a>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </div>
25
64
  `;
@@ -1,18 +1,43 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<SearchMenu /> matches the latest snapshot 1`] = `
4
- <Connect(Submenu)
5
- icon="search"
6
- items={
7
- [
8
- {
9
- "name": "search",
10
- "routes": [
11
- "/search",
12
- ],
13
- },
14
- ]
15
- }
16
- name="search"
17
- />
4
+ <div>
5
+ <div
6
+ class="active"
7
+ >
8
+ <div
9
+ aria-expanded="false"
10
+ class="ui item dropdown active"
11
+ role="listbox"
12
+ tabindex="0"
13
+ >
14
+ <a
15
+ class="ui"
16
+ href="/search"
17
+ >
18
+ <i
19
+ aria-hidden="true"
20
+ class="search large icon"
21
+ />
22
+ </a>
23
+ <div
24
+ class="menu transition"
25
+ >
26
+ <a
27
+ aria-checked="false"
28
+ class="item"
29
+ href="/search"
30
+ name="search"
31
+ role="option"
32
+ >
33
+ <span
34
+ class="text"
35
+ >
36
+ Search
37
+ </span>
38
+ </a>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
18
43
  `;
@@ -1,18 +1,43 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<TaxonomyMenu /> matches the latest snapshot 1`] = `
4
- <Connect(Submenu)
5
- icon="sitemap"
6
- items={
7
- [
8
- {
9
- "name": "taxonomy",
10
- "routes": [
11
- "/domains",
12
- ],
13
- },
14
- ]
15
- }
16
- name="taxonomy"
17
- />
4
+ <div>
5
+ <div
6
+ class="active"
7
+ >
8
+ <div
9
+ aria-expanded="false"
10
+ class="ui item dropdown active"
11
+ role="listbox"
12
+ tabindex="0"
13
+ >
14
+ <a
15
+ class="ui"
16
+ href="/domains"
17
+ >
18
+ <i
19
+ aria-hidden="true"
20
+ class="sitemap large icon"
21
+ />
22
+ </a>
23
+ <div
24
+ class="menu transition"
25
+ >
26
+ <a
27
+ aria-checked="false"
28
+ class="item"
29
+ href="/domains"
30
+ name="taxonomy"
31
+ role="option"
32
+ >
33
+ <span
34
+ class="text"
35
+ >
36
+ Taxonomy
37
+ </span>
38
+ </a>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
18
43
  `;
@@ -142,7 +142,13 @@ export default function Messages() {
142
142
  return (
143
143
  <Segment>
144
144
  <Header as="h2">
145
- <Icon circular name="language" />
145
+ <Icon
146
+ circular
147
+ name={formatMessage({
148
+ id: "i18n.header.icon",
149
+ defaultMessage: "language",
150
+ })}
151
+ />
146
152
  <Header.Content>
147
153
  <FormattedMessage id={"i18n.messages.header"} />
148
154
  <Header.Subheader>
@@ -31,7 +31,7 @@ const NewMessage = () => {
31
31
  <Container text as={Segment}>
32
32
  <Header
33
33
  as="h2"
34
- icon="language"
34
+ icon={formatMessage({id: "i18n.header.icon",defaultMessage: "language" })}
35
35
  content={formatMessage({ id: "i18n.actions.createMessage" })}
36
36
  />
37
37
  <MessageForm onSubmit={onSubmit} />