@truedat/dd 4.44.2 → 4.44.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.
Files changed (102) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/package.json +23 -19
  3. package/src/api/mutations.js +27 -0
  4. package/src/api/queries.js +24 -0
  5. package/src/api.js +2 -0
  6. package/src/components/DictionaryRoutes.js +7 -5
  7. package/src/components/EditDomainPopup.js +1 -1
  8. package/src/components/FilteredNav.js +9 -9
  9. package/src/components/GrantFilters.js +1 -5
  10. package/src/components/GrantRequestApprovalPopup.js +0 -1
  11. package/src/components/ImplementationStructuresLoader.js +14 -11
  12. package/src/components/PendingStructureNotes.js +11 -5
  13. package/src/components/ReferenceDataset.js +23 -0
  14. package/src/components/ReferenceDatasetActions.js +88 -0
  15. package/src/components/ReferenceDatasetBreadcrumbs.js +22 -0
  16. package/src/components/ReferenceDatasetCreate.js +36 -0
  17. package/src/components/ReferenceDatasetDetail.js +42 -0
  18. package/src/components/ReferenceDatasetForm.js +109 -0
  19. package/src/components/ReferenceDatasetHeader.js +32 -0
  20. package/src/components/ReferenceDatasetRoutes.js +56 -0
  21. package/src/components/ReferenceDatasetTable.js +42 -0
  22. package/src/components/ReferenceDatasets.js +61 -0
  23. package/src/components/ReferenceDatasetsTable.js +105 -0
  24. package/src/components/StructureConfidentialButton.js +1 -1
  25. package/src/components/StructureFilters.js +1 -5
  26. package/src/components/StructureNotesEdit.js +6 -6
  27. package/src/components/StructureProperties.js +4 -1
  28. package/src/components/StructureTagsRoutes.js +0 -1
  29. package/src/components/StructureTypesCrumbs.js +0 -1
  30. package/src/components/StructureVersionListItem.js +2 -2
  31. package/src/components/StructureView.js +1 -3
  32. package/src/components/SystemForm.js +1 -1
  33. package/src/components/__tests__/ImplementationStructuresLoader.spec.js +12 -54
  34. package/src/components/__tests__/LineageEventsTable.spec.js +2 -7
  35. package/src/components/__tests__/LineageRoutes.spec.js +4 -4
  36. package/src/components/__tests__/PendingStructureNoteRow.spec.js +1 -17
  37. package/src/components/__tests__/PendingStructureNotes.spec.js +5 -33
  38. package/src/components/__tests__/ReferenceDataset.spec.js +64 -0
  39. package/src/components/__tests__/ReferenceDatasetActions.spec.js +17 -0
  40. package/src/components/__tests__/ReferenceDatasetBreadcrumbs.spec.js +12 -0
  41. package/src/components/__tests__/ReferenceDatasetCreate.spec.js +12 -0
  42. package/src/components/__tests__/ReferenceDatasetDetail.spec.js +37 -0
  43. package/src/components/__tests__/ReferenceDatasetForm.spec.js +51 -0
  44. package/src/components/__tests__/ReferenceDatasetHeader.spec.js +17 -0
  45. package/src/components/__tests__/ReferenceDatasetRoutes.spec.js +74 -0
  46. package/src/components/__tests__/ReferenceDatasetTable.spec.js +18 -0
  47. package/src/components/__tests__/ReferenceDatasets.spec.js +32 -0
  48. package/src/components/__tests__/ReferenceDatasetsTable.spec.js +22 -0
  49. package/src/components/__tests__/StructureConfidentialButton.spec.js +26 -30
  50. package/src/components/__tests__/StructureGrantRequestButton.spec.js +4 -23
  51. package/src/components/__tests__/StructureNoteActions.spec.js +2 -19
  52. package/src/components/__tests__/StructureNotes.spec.js +3 -15
  53. package/src/components/__tests__/StructureNotesEdit.spec.js +5 -25
  54. package/src/components/__tests__/StructureProperties.spec.js +6 -8
  55. package/src/components/__tests__/StructureTagForm.spec.js +1 -3
  56. package/src/components/__tests__/StructureVersionListItem.spec.js +4 -4
  57. package/src/components/__tests__/StructuresOptions.spec.js +1 -7
  58. package/src/components/__tests__/StructuresUploadEventsTable.spec.js +3 -4
  59. package/src/components/__tests__/__snapshots__/DictionaryRoutes.spec.js.snap +4 -0
  60. package/src/components/__tests__/__snapshots__/LineageRoutes.spec.js.snap +1 -20
  61. package/src/components/__tests__/__snapshots__/PendingStructureNotes.spec.js.snap +3 -3
  62. package/src/components/__tests__/__snapshots__/ProfileExecution.spec.js.snap +2 -1
  63. package/src/components/__tests__/__snapshots__/ReferenceDataset.spec.js.snap +365 -0
  64. package/src/components/__tests__/__snapshots__/ReferenceDatasetActions.spec.js.snap +65 -0
  65. package/src/components/__tests__/__snapshots__/ReferenceDatasetBreadcrumbs.spec.js.snap +25 -0
  66. package/src/components/__tests__/__snapshots__/ReferenceDatasetCreate.spec.js.snap +98 -0
  67. package/src/components/__tests__/__snapshots__/ReferenceDatasetDetail.spec.js.snap +135 -0
  68. package/src/components/__tests__/__snapshots__/ReferenceDatasetForm.spec.js.snap +61 -0
  69. package/src/components/__tests__/__snapshots__/ReferenceDatasetHeader.spec.js.snap +95 -0
  70. package/src/components/__tests__/__snapshots__/ReferenceDatasetRoutes.spec.js.snap +414 -0
  71. package/src/components/__tests__/__snapshots__/ReferenceDatasetTable.spec.js.snap +75 -0
  72. package/src/components/__tests__/__snapshots__/ReferenceDatasets.spec.js.snap +128 -0
  73. package/src/components/__tests__/__snapshots__/ReferenceDatasetsTable.spec.js.snap +86 -0
  74. package/src/components/__tests__/__snapshots__/StructureConfidentialButton.spec.js.snap +13 -33
  75. package/src/components/__tests__/__snapshots__/StructureNavClassified.spec.js.snap +2 -2
  76. package/src/components/__tests__/__snapshots__/StructureNotes.spec.js.snap +9 -9
  77. package/src/components/__tests__/__snapshots__/StructureNotesEdit.spec.js.snap +2 -2
  78. package/src/components/__tests__/__snapshots__/StructureProperties.spec.js.snap +76 -71
  79. package/src/components/__tests__/__snapshots__/StructureVersionListItem.spec.js.snap +31 -64
  80. package/src/messages/en.js +18 -0
  81. package/src/messages/es.js +20 -0
  82. package/src/reducers/__tests__/ddMessage.spec.js +26 -5
  83. package/src/reducers/__tests__/graph.spec.js +1 -6
  84. package/src/reducers/__tests__/referenceDatasetSaving.spec.js +44 -0
  85. package/src/reducers/__tests__/structureRedirect.spec.js +37 -13
  86. package/src/reducers/ddMessage.js +26 -1
  87. package/src/reducers/index.js +2 -0
  88. package/src/reducers/referenceDatasetSaving.js +16 -0
  89. package/src/reducers/structureRedirect.js +36 -15
  90. package/src/reducers/structuresUploadEvents.js +0 -1
  91. package/src/routines.js +35 -74
  92. package/src/sagas/__tests__/createReferenceDataset.spec.js +90 -0
  93. package/src/sagas/__tests__/deleteReferenceDataset.spec.js +81 -0
  94. package/src/sagas/__tests__/updateReferenceDataset.spec.js +116 -0
  95. package/src/sagas/createReferenceDataset.js +34 -0
  96. package/src/sagas/deleteReferenceDataset.js +29 -0
  97. package/src/sagas/downloadReferenceDataset.js +44 -0
  98. package/src/sagas/index.js +31 -22
  99. package/src/sagas/updateReferenceDataset.js +35 -0
  100. package/src/selectors/getRelationSortingCriteria.js +3 -5
  101. package/src/selectors/getTabVisibility.js +1 -4
  102. package/src/components/__tests__/__snapshots__/ImplementationStructuresLoader.spec.js.snap +0 -30
@@ -1,24 +1,13 @@
1
1
  import React, { Suspense } from "react";
2
2
  import userEvent from "@testing-library/user-event";
3
3
  import { render } from "@truedat/test/render";
4
- import { intl } from "@truedat/test/intl-stub";
5
4
  import { StructureNotes } from "../StructureNotes";
6
5
 
7
- import messages from "../../messages/en";
8
-
9
- const renderOpts = {
10
- messages: { en: messages },
11
- };
12
-
13
6
  jest.mock("@truedat/df/components/DynamicFormViewer", () => {
14
7
  const DynamicFormViewer = () => <div>DynamicFormViewer</div>;
15
8
  return DynamicFormViewer;
16
9
  });
17
10
 
18
- // workaround for enzyme issue with React.useContext
19
- // see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
20
- jest.spyOn(React, "useContext").mockImplementation(() => intl);
21
-
22
11
  describe("<StructureNotes />", () => {
23
12
  it("matches the latest snapshot", async () => {
24
13
  const props = {
@@ -46,16 +35,15 @@ describe("<StructureNotes />", () => {
46
35
  const { findByText, container } = render(
47
36
  <Suspense fallback={null}>
48
37
  <StructureNotes {...props} />
49
- </Suspense>,
50
- renderOpts
38
+ </Suspense>
51
39
  );
52
40
  expect(container).toMatchSnapshot();
53
41
 
54
- userEvent.click(await findByText(/show_versioned/));
42
+ userEvent.click(await findByText("Show previous versions"));
55
43
 
56
44
  expect(container).toMatchSnapshot();
57
45
 
58
- userEvent.click(await findByText(/collapsed/));
46
+ userEvent.click(await findByText("Show content"));
59
47
 
60
48
  expect(container).toMatchSnapshot();
61
49
  });
@@ -2,29 +2,9 @@ import React, { Suspense } from "react";
2
2
  import { waitFor } from "@testing-library/react";
3
3
  import userEvent from "@testing-library/user-event";
4
4
  import { render } from "@truedat/test/render";
5
- import { intl } from "@truedat/test/intl-stub";
6
5
  import { applyTemplate } from "@truedat/df/utils";
7
6
  import { StructureNotesEdit } from "../StructureNotesEdit";
8
7
 
9
- import messages from "../../messages/en";
10
-
11
- const renderOpts = {
12
- messages: { en: messages },
13
- };
14
-
15
- const DynamicForm = () => <div>DynamicForm</div>;
16
- const TemplateLoader = () => <div>TemplateLoader</div>;
17
-
18
- jest.mock("@truedat/df/components/DynamicForm", () => DynamicForm);
19
- jest.mock(
20
- "@truedat/df/templates/components/TemplateLoader",
21
- () => TemplateLoader
22
- );
23
-
24
- // workaround for enzyme issue with React.useContext
25
- // see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
26
- jest.spyOn(React, "useContext").mockImplementation(() => intl);
27
-
28
8
  describe("<StructureNotesEdit />", () => {
29
9
  it("matches the latest snapshot", () => {
30
10
  const props = {
@@ -38,12 +18,12 @@ describe("<StructureNotesEdit />", () => {
38
18
  },
39
19
  latestDfContent: { foo: "bar" },
40
20
  applyTemplate: applyTemplate({ id: 2 }),
21
+ selectDomains: jest.fn(),
41
22
  };
42
23
  const { container } = render(
43
24
  <Suspense fallback={null}>
44
25
  <StructureNotesEdit {...props} />
45
- </Suspense>,
46
- renderOpts
26
+ </Suspense>
47
27
  );
48
28
  expect(container).toMatchSnapshot();
49
29
  });
@@ -77,16 +57,16 @@ describe("<StructureNotesEdit />", () => {
77
57
  },
78
58
  latestDfContent: { foo: "bar" },
79
59
  applyTemplate: applyTemplate(template),
60
+ selectDomains: jest.fn(),
80
61
  };
81
62
 
82
63
  const { findByText } = render(
83
64
  <Suspense fallback={null}>
84
65
  <StructureNotesEdit {...props} />
85
- </Suspense>,
86
- renderOpts
66
+ </Suspense>
87
67
  );
88
68
 
89
- userEvent.click(await findByText(/actions\.save/));
69
+ userEvent.click(await findByText("Save"));
90
70
 
91
71
  await waitFor(() => {
92
72
  expect(doStructureNoteAction.mock.calls.length).toBe(1);
@@ -1,22 +1,20 @@
1
1
  import React from "react";
2
- import { shallowWithIntl } from "@truedat/test/intl-stub";
3
- import { StructureProperties, mapStateToProps } from "../StructureProperties";
2
+ import { render } from "@truedat/test/render";
3
+ import StructureProperties from "../StructureProperties";
4
4
 
5
5
  describe("<StructureProperties />", () => {
6
6
  it("matches the latest snapshot", () => {
7
7
  const structure = { description: "dd", group: "gp" };
8
8
  const state = { structure };
9
- const props = mapStateToProps(state);
10
- const wrapper = shallowWithIntl(<StructureProperties {...props} />);
11
- expect(wrapper).toMatchSnapshot();
9
+ const { container } = render(<StructureProperties />, { state });
10
+ expect(container).toMatchSnapshot();
12
11
  });
13
12
 
14
13
  it("matches the latest snapshot (custom structureProperties)", () => {
15
14
  const structure = { metadata: { foo: "bar" } };
16
15
  const structureProperties = [{ name: "metadata.foo" }];
17
16
  const state = { structure, structureProperties };
18
- const props = mapStateToProps(state);
19
- const wrapper = shallowWithIntl(<StructureProperties {...props} />);
20
- expect(wrapper).toMatchSnapshot();
17
+ const { container } = render(<StructureProperties />, { state });
18
+ expect(container).toMatchSnapshot();
21
19
  });
22
20
  });
@@ -3,16 +3,14 @@ import { waitFor } from "@testing-library/react";
3
3
  import userEvent from "@testing-library/user-event";
4
4
  import { render } from "@truedat/test/render";
5
5
  import { DOMAINS_QUERY } from "@truedat/core/api/queries";
6
- import coreEn from "@truedat/core/messages/en";
7
6
  import StructureTagForm from "../StructureTagForm";
8
- import en from "../../messages/en";
9
7
 
10
8
  const domainsMock = {
11
9
  request: { query: DOMAINS_QUERY },
12
10
  result: { data: { domains: [{ id: "123", name: "foo" }] } },
13
11
  };
12
+
14
13
  const renderOpts = {
15
- messages: { en: { ...coreEn, ...en } },
16
14
  mocks: [domainsMock],
17
15
  };
18
16
 
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { shallowWithIntl } from "@truedat/test/intl-stub";
3
- import { StructureVersionListItem } from "../StructureVersionListItem";
2
+ import { render } from "@truedat/test/render";
3
+ import StructureVersionListItem from "../StructureVersionListItem";
4
4
 
5
5
  describe("<StructureVersionListItem />", () => {
6
6
  it("matches the latest snapshot", () => {
@@ -11,7 +11,7 @@ describe("<StructureVersionListItem />", () => {
11
11
  const inserted_at = "2018-01-01T01:01:01.123456Z";
12
12
  const props = { id, version, inserted_at, history };
13
13
 
14
- const wrapper = shallowWithIntl(<StructureVersionListItem {...props} />);
15
- expect(wrapper).toMatchSnapshot();
14
+ const { container } = render(<StructureVersionListItem {...props} />);
15
+ expect(container).toMatchSnapshot();
16
16
  });
17
17
  });
@@ -1,13 +1,7 @@
1
1
  import React from "react";
2
2
  import { waitFor } from "@testing-library/react";
3
3
  import { render } from "@truedat/test/render";
4
- import coreEn from "@truedat/core/messages/en";
5
4
  import StructuresOptions from "../StructuresOptions";
6
- import en from "../../messages/en";
7
-
8
- const renderOpts = {
9
- messages: { en: { ...coreEn, ...en } },
10
- };
11
5
 
12
6
  describe("<StructuresOptions />", () => {
13
7
  const props = {
@@ -18,7 +12,7 @@ describe("<StructuresOptions />", () => {
18
12
  };
19
13
 
20
14
  it("matches the latest snapshot", async () => {
21
- const { container } = render(<StructuresOptions {...props} />, renderOpts);
15
+ const { container } = render(<StructuresOptions {...props} />);
22
16
  await waitFor(() => expect(container).toMatchSnapshot());
23
17
  });
24
18
  });
@@ -1,8 +1,6 @@
1
- import _ from "lodash/fp";
2
1
  import React from "react";
3
2
  import userEvent from "@testing-library/user-event";
4
3
  import { render } from "@truedat/test/render";
5
- import en from "../../messages/en";
6
4
  import StructuresUploadEventsTable from "../StructuresUploadEventsTable";
7
5
 
8
6
  const events = [
@@ -55,8 +53,9 @@ const events = [
55
53
  ];
56
54
 
57
55
  const renderOpts = {
58
- messages: { en },
59
- state: { structuresUploadEvents: events },
56
+ state: {
57
+ structuresUploadEvents: events,
58
+ },
60
59
  };
61
60
 
62
61
  describe("<StructuresUploadEventsTable />", () => {
@@ -29,6 +29,10 @@ exports[`<DictionaryRoutes /> matches the latest snapshot 1`] = `
29
29
  path="/structureNotes"
30
30
  render={[Function]}
31
31
  />
32
+ <Route
33
+ path="/referenceDatasets"
34
+ render={[Function]}
35
+ />
32
36
  <Route
33
37
  path="/profileGroups/:id"
34
38
  render={[Function]}
@@ -1,22 +1,3 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`<LineageRoutes /> matches the latest snapshot 1`] = `
4
- <Fragment>
5
- <Route
6
- path="/graphs"
7
- render={[Function]}
8
- />
9
- <Route
10
- path="/graphs/:id"
11
- render={[Function]}
12
- />
13
- <Route
14
- path="/lineage_events"
15
- render={[Function]}
16
- />
17
- <Route
18
- path="/sample"
19
- render={[Function]}
20
- />
21
- </Fragment>
22
- `;
3
+ exports[`<LineageRoutes /> matches the latest snapshot 1`] = `<div />`;
@@ -16,11 +16,11 @@ exports[`<PendingStructureNotes /> matches the latest snapshot 1`] = `
16
16
  <div
17
17
  class="content"
18
18
  >
19
- Header
19
+ Pending Notes
20
20
  <div
21
21
  class="sub header"
22
22
  >
23
- Sub header
23
+ Structure notes pending some action
24
24
  </div>
25
25
  </div>
26
26
  </h2>
@@ -50,7 +50,7 @@ exports[`<PendingStructureNotes /> matches the latest snapshot 1`] = `
50
50
  value=""
51
51
  />
52
52
  <label>
53
- Empty
53
+ Pending approval
54
54
  </label>
55
55
  </div>
56
56
  <div
@@ -12,7 +12,7 @@ exports[`<Event /> matches the latest snapshot 1`] = `
12
12
  />
13
13
  <FeedContent
14
14
  date={
15
- <t
15
+ <n
16
16
  ago={false}
17
17
  calendar={false}
18
18
  date="2019-09-20 17:01:00"
@@ -27,6 +27,7 @@ exports[`<Event /> matches the latest snapshot 1`] = `
27
27
  onChange={[Function]}
28
28
  titleFormat=""
29
29
  toNow={false}
30
+ trim={false}
30
31
  unit={null}
31
32
  unix={false}
32
33
  utc={false}
@@ -0,0 +1,365 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<ReferenceDataset /> edit dataset view matches the latest snapshot 1`] = `
4
+ <div>
5
+ <div
6
+ class="ui breadcrumb"
7
+ >
8
+ <a
9
+ class="section"
10
+ href="/referenceDatasets"
11
+ >
12
+ Reference Data
13
+ </a>
14
+ <i
15
+ aria-hidden="true"
16
+ class="right angle icon divider"
17
+ />
18
+ <div
19
+ class="active section"
20
+ >
21
+ foo
22
+ </div>
23
+ </div>
24
+ <div
25
+ class="ui segment"
26
+ >
27
+ <div
28
+ class="ui grid"
29
+ >
30
+ <div
31
+ class="eight wide column"
32
+ >
33
+ <h2
34
+ class="ui header"
35
+ >
36
+ <i
37
+ aria-hidden="true"
38
+ class="list ol circular icon"
39
+ />
40
+ <div
41
+ class="content"
42
+ >
43
+ foo
44
+ <div
45
+ class="sub header"
46
+ >
47
+ Reference Dataset
48
+ </div>
49
+ </div>
50
+ </h2>
51
+ </div>
52
+ <div
53
+ class="right aligned eight wide column"
54
+ >
55
+ <div
56
+ aria-expanded="false"
57
+ class="ui floating dropdown button icon group-actions"
58
+ role="listbox"
59
+ tabindex="0"
60
+ >
61
+ <i
62
+ aria-hidden="true"
63
+ class="ellipsis vertical icon"
64
+ />
65
+ <div
66
+ class="left menu transition"
67
+ >
68
+ <a
69
+ aria-checked="false"
70
+ aria-selected="true"
71
+ class="selected item"
72
+ href="/referenceDatasets/123/edit"
73
+ role="option"
74
+ style="pointer-events: all;"
75
+ >
76
+ <i
77
+ aria-hidden="true"
78
+ class="edit icon"
79
+ />
80
+ <span
81
+ class="text"
82
+ >
83
+ Edit
84
+ </span>
85
+ </a>
86
+ <a
87
+ aria-checked="false"
88
+ aria-selected="false"
89
+ class="item"
90
+ role="option"
91
+ style="pointer-events: all;"
92
+ >
93
+ <i
94
+ aria-hidden="true"
95
+ class="download icon"
96
+ />
97
+ <span
98
+ class="text"
99
+ >
100
+ Download
101
+ </span>
102
+ </a>
103
+ <button
104
+ class="ui button"
105
+ >
106
+ <i
107
+ aria-hidden="true"
108
+ class="trash icon"
109
+ />
110
+ Delete
111
+ </button>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ <div
117
+ class="ui hidden divider"
118
+ />
119
+ <form
120
+ class="ui form"
121
+ >
122
+ <div
123
+ class="required field"
124
+ >
125
+ <label>
126
+ Name
127
+ </label>
128
+ <div
129
+ class="ui input"
130
+ >
131
+ <input
132
+ autocomplete="off"
133
+ required=""
134
+ type="text"
135
+ value="foo"
136
+ />
137
+ </div>
138
+ </div>
139
+ <div
140
+ class="field"
141
+ >
142
+ <label>
143
+ Dataset File
144
+ </label>
145
+ <div
146
+ class="ui input"
147
+ >
148
+ <input
149
+ accept="text/*,.csv,.txt"
150
+ type="file"
151
+ />
152
+ </div>
153
+ </div>
154
+ <div
155
+ class="actions"
156
+ >
157
+ <button
158
+ class="ui primary disabled right floated button"
159
+ disabled=""
160
+ tabindex="-1"
161
+ type="submit"
162
+ >
163
+ Save
164
+ </button>
165
+ <a
166
+ class="ui secondary button"
167
+ href="/referenceDatasets/123/edit"
168
+ role="button"
169
+ >
170
+ Cancel
171
+ </a>
172
+ </div>
173
+ </form>
174
+ </div>
175
+ </div>
176
+ `;
177
+
178
+ exports[`<ReferenceDataset /> show dataset view matches the latest snapshot 1`] = `
179
+ <div>
180
+ <div
181
+ class="ui breadcrumb"
182
+ >
183
+ <a
184
+ class="section"
185
+ href="/referenceDatasets"
186
+ >
187
+ Reference Data
188
+ </a>
189
+ <i
190
+ aria-hidden="true"
191
+ class="right angle icon divider"
192
+ />
193
+ <div
194
+ class="active section"
195
+ >
196
+ foo
197
+ </div>
198
+ </div>
199
+ <div
200
+ class="ui segment"
201
+ >
202
+ <div
203
+ class="ui grid"
204
+ >
205
+ <div
206
+ class="eight wide column"
207
+ >
208
+ <h2
209
+ class="ui header"
210
+ >
211
+ <i
212
+ aria-hidden="true"
213
+ class="list ol circular icon"
214
+ />
215
+ <div
216
+ class="content"
217
+ >
218
+ foo
219
+ <div
220
+ class="sub header"
221
+ >
222
+ Reference Dataset
223
+ </div>
224
+ </div>
225
+ </h2>
226
+ </div>
227
+ <div
228
+ class="right aligned eight wide column"
229
+ >
230
+ <div
231
+ aria-expanded="false"
232
+ class="ui floating dropdown button icon group-actions"
233
+ role="listbox"
234
+ tabindex="0"
235
+ >
236
+ <i
237
+ aria-hidden="true"
238
+ class="ellipsis vertical icon"
239
+ />
240
+ <div
241
+ class="left menu transition"
242
+ >
243
+ <a
244
+ aria-checked="false"
245
+ aria-selected="true"
246
+ class="selected item"
247
+ href="/referenceDatasets/123/edit"
248
+ role="option"
249
+ style="pointer-events: all;"
250
+ >
251
+ <i
252
+ aria-hidden="true"
253
+ class="edit icon"
254
+ />
255
+ <span
256
+ class="text"
257
+ >
258
+ Edit
259
+ </span>
260
+ </a>
261
+ <a
262
+ aria-checked="false"
263
+ aria-selected="false"
264
+ class="item"
265
+ role="option"
266
+ style="pointer-events: all;"
267
+ >
268
+ <i
269
+ aria-hidden="true"
270
+ class="download icon"
271
+ />
272
+ <span
273
+ class="text"
274
+ >
275
+ Download
276
+ </span>
277
+ </a>
278
+ <button
279
+ class="ui button"
280
+ >
281
+ <i
282
+ aria-hidden="true"
283
+ class="trash icon"
284
+ />
285
+ Delete
286
+ </button>
287
+ </div>
288
+ </div>
289
+ </div>
290
+ </div>
291
+ <div
292
+ class="ui hidden divider"
293
+ />
294
+ <table
295
+ class="ui very basic compact table"
296
+ >
297
+ <thead
298
+ class=""
299
+ >
300
+ <tr
301
+ class=""
302
+ >
303
+ <th
304
+ class=""
305
+ >
306
+ foo
307
+ </th>
308
+ <th
309
+ class=""
310
+ >
311
+ bar
312
+ </th>
313
+ <th
314
+ class=""
315
+ >
316
+ baz
317
+ </th>
318
+ </tr>
319
+ </thead>
320
+ <tbody
321
+ class=""
322
+ >
323
+ <tr
324
+ class=""
325
+ >
326
+ <td
327
+ class=""
328
+ >
329
+ foo1
330
+ </td>
331
+ <td
332
+ class=""
333
+ >
334
+ bar1
335
+ </td>
336
+ <td
337
+ class=""
338
+ >
339
+ baz1
340
+ </td>
341
+ </tr>
342
+ <tr
343
+ class=""
344
+ >
345
+ <td
346
+ class=""
347
+ >
348
+ foo2
349
+ </td>
350
+ <td
351
+ class=""
352
+ >
353
+ bar2
354
+ </td>
355
+ <td
356
+ class=""
357
+ >
358
+ baz2
359
+ </td>
360
+ </tr>
361
+ </tbody>
362
+ </table>
363
+ </div>
364
+ </div>
365
+ `;