@databiosphere/findable-ui 49.6.0 → 50.1.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.
Files changed (18) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +25 -0
  3. package/lib/common/analytics/entities.d.ts +2 -0
  4. package/lib/common/analytics/entities.js +2 -0
  5. package/lib/components/Export/common/tracking.d.ts +8 -0
  6. package/lib/components/Export/common/tracking.js +12 -0
  7. package/lib/components/Export/components/ExportToTerra/components/ExportToTerraReady/exportToTerraReady.js +3 -5
  8. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/ConnectTerraToNIHAccount/connectTerraToNIHAccount.js +1 -1
  9. package/lib/components/Export/components/ExportToTerra/exportToTerra.d.ts +2 -1
  10. package/lib/components/Export/components/ExportToTerra/exportToTerra.js +10 -5
  11. package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.js +7 -1
  12. package/package.json +4 -4
  13. package/src/common/analytics/entities.ts +2 -0
  14. package/src/components/Export/common/tracking.ts +14 -0
  15. package/src/components/Export/components/ExportToTerra/components/ExportToTerraReady/exportToTerraReady.tsx +12 -9
  16. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/ConnectTerraToNIHAccount/connectTerraToNIHAccount.tsx +3 -3
  17. package/src/components/Export/components/ExportToTerra/exportToTerra.tsx +13 -4
  18. package/src/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.tsx +7 -1
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "49.6.0"
2
+ ".": "50.1.0"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [50.1.0](https://github.com/DataBiosphere/findable-ui/compare/v50.0.0...v50.1.0) (2026-03-20)
4
+
5
+
6
+ ### Features
7
+
8
+ * add dataset-specific analytics events for exports ([#831](https://github.com/DataBiosphere/findable-ui/issues/831)) ([aea5262](https://github.com/DataBiosphere/findable-ui/commit/aea526241a92767f51ed7f8540869484502a1478))
9
+
10
+ ## [50.0.0](https://github.com/DataBiosphere/findable-ui/compare/v49.6.0...v50.0.0) (2026-03-20)
11
+
12
+
13
+ ### ⚠ BREAKING CHANGES
14
+
15
+ * update minor dependencies to resolve npm audit vulnerabilities ([#828](https://github.com/DataBiosphere/findable-ui/issues/828))
16
+
17
+ ### Bug Fixes
18
+
19
+ * update 'open to terra' button to be a href ([#825](https://github.com/DataBiosphere/findable-ui/issues/825)) ([#826](https://github.com/DataBiosphere/findable-ui/issues/826)) ([49f686a](https://github.com/DataBiosphere/findable-ui/commit/49f686ac3eae32c9dbe3dfb1762f5c7a62a1ed12))
20
+ * update nih account title to include researcher auth service (ras) ([#832](https://github.com/DataBiosphere/findable-ui/issues/832)) ([#833](https://github.com/DataBiosphere/findable-ui/issues/833)) ([bc424e6](https://github.com/DataBiosphere/findable-ui/commit/bc424e66e2babe513faf12302070bec67554d4be))
21
+
22
+
23
+ ### Chores
24
+
25
+ * update minor dependencies to resolve npm audit vulnerabilities ([#827](https://github.com/DataBiosphere/findable-ui/issues/827)) ([954fe91](https://github.com/DataBiosphere/findable-ui/commit/954fe91ff941bb0abfedcb5dd0e10d773d6b5cd4))
26
+ * update minor dependencies to resolve npm audit vulnerabilities ([#828](https://github.com/DataBiosphere/findable-ui/issues/828)) ([954fe91](https://github.com/DataBiosphere/findable-ui/commit/954fe91ff941bb0abfedcb5dd0e10d773d6b5cd4))
27
+
3
28
  ## [49.6.0](https://github.com/DataBiosphere/findable-ui/compare/v49.5.0...v49.6.0) (2026-03-12)
4
29
 
5
30
 
@@ -5,6 +5,8 @@ export type DataLayer = any;
5
5
  export declare enum EVENT_NAME {
6
6
  BULK_DOWNLOAD_REQUESTED = "bulk_download_requested",
7
7
  CHAT_SUBMITTED = "chat_submitted",
8
+ DATASET_ANALYZE_IN_TERRA_REQUESTED = "dataset_analyze_in_terra_requested",
9
+ DATASET_FILE_MANIFEST_REQUESTED = "dataset_file_manifest_requested",
8
10
  ENTITY_SELECTED = "entity_selected",
9
11
  ENTITY_TABLE_PAGINATED = "entity_table_paginated",
10
12
  ENTITY_TABLE_SORTED = "entity_table_sorted",
@@ -5,6 +5,8 @@ export var EVENT_NAME;
5
5
  (function (EVENT_NAME) {
6
6
  EVENT_NAME["BULK_DOWNLOAD_REQUESTED"] = "bulk_download_requested";
7
7
  EVENT_NAME["CHAT_SUBMITTED"] = "chat_submitted";
8
+ EVENT_NAME["DATASET_ANALYZE_IN_TERRA_REQUESTED"] = "dataset_analyze_in_terra_requested";
9
+ EVENT_NAME["DATASET_FILE_MANIFEST_REQUESTED"] = "dataset_file_manifest_requested";
8
10
  EVENT_NAME["ENTITY_SELECTED"] = "entity_selected";
9
11
  EVENT_NAME["ENTITY_TABLE_PAGINATED"] = "entity_table_paginated";
10
12
  EVENT_NAME["ENTITY_TABLE_SORTED"] = "entity_table_sorted";
@@ -4,6 +4,14 @@
4
4
  * @param toolName - Tool name.
5
5
  */
6
6
  export declare function trackBulkDownloadRequested(entity_name: string, toolName: string): void;
7
+ /**
8
+ * Executes event tracking for the dataset file manifest export.
9
+ */
10
+ export declare function trackDatasetFileManifestRequested(): void;
11
+ /**
12
+ * Executes event tracking for the dataset Terra export.
13
+ */
14
+ export declare function trackDatasetExportToTerraRequested(): void;
7
15
  /**
8
16
  * Executes event tracking for the file manifest export.
9
17
  * @param entity_name - Entity (tab) name.
@@ -12,6 +12,18 @@ export function trackBulkDownloadRequested(entity_name, toolName) {
12
12
  [EVENT_PARAM.TOOL_NAME]: toolName,
13
13
  });
14
14
  }
15
+ /**
16
+ * Executes event tracking for the dataset file manifest export.
17
+ */
18
+ export function trackDatasetFileManifestRequested() {
19
+ track(EVENT_NAME.DATASET_FILE_MANIFEST_REQUESTED);
20
+ }
21
+ /**
22
+ * Executes event tracking for the dataset Terra export.
23
+ */
24
+ export function trackDatasetExportToTerraRequested() {
25
+ track(EVENT_NAME.DATASET_ANALYZE_IN_TERRA_REQUESTED);
26
+ }
15
27
  /**
16
28
  * Executes event tracking for the file manifest export.
17
29
  * @param entity_name - Entity (tab) name.
@@ -1,11 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ButtonPrimary } from "../../../../../common/Button/components/ButtonPrimary/buttonPrimary";
3
2
  import { FluidPaper } from "../../../../../common/Paper/paper.styles";
4
3
  import { ANCHOR_TARGET, REL_ATTRIBUTE, } from "../../../../../Links/common/entities";
5
4
  import { Section, SectionActions, SectionContent, } from "../../../../export.styles";
5
+ import { BUTTON_PROPS } from "../../../../../../styles/common/mui/button";
6
+ import { Button, Link } from "@mui/material";
6
7
  export const ExportToTerraReady = ({ ExportToTerraSuccess, exportURL, }) => {
7
- const onOpenTerra = () => {
8
- window.open(exportURL, ANCHOR_TARGET.BLANK, REL_ATTRIBUTE.NO_OPENER_NO_REFERRER);
9
- };
10
- return (_jsx(FluidPaper, { children: _jsxs(Section, { children: [_jsx(SectionContent, { children: _jsx(ExportToTerraSuccess, {}) }), _jsx(SectionActions, { children: _jsx(ButtonPrimary, { onClick: onOpenTerra, children: "Open Terra" }) })] }) }));
8
+ return (_jsx(FluidPaper, { children: _jsxs(Section, { children: [_jsx(SectionContent, { children: _jsx(ExportToTerraSuccess, {}) }), _jsx(SectionActions, { children: _jsx(Button, { color: BUTTON_PROPS.COLOR.PRIMARY, component: Link, href: exportURL, rel: REL_ATTRIBUTE.NO_OPENER_NO_REFERRER, target: ANCHOR_TARGET.BLANK, variant: BUTTON_PROPS.VARIANT.CONTAINED, children: "Open Terra" }) })] }) }));
11
9
  };
@@ -6,5 +6,5 @@ export const ConnectTerraToNIHAccount = ({ active, completed, step, }) => {
6
6
  const onGotoTutorial = () => {
7
7
  window.open("https://support.terra.bio/hc/en-us/articles/32634034451099-RAS-Integration-for-AnVIL-Data-Launching-3-25-26", ANCHOR_TARGET.BLANK, REL_ATTRIBUTE.NO_OPENER_NO_REFERRER);
8
8
  };
9
- return (_jsx(FormStep, { action: _jsx(ButtonPrimary, { onClick: onGotoTutorial, children: "Go to Tutorial" }), active: active, completed: completed, step: step, text: _jsx("p", { children: "Next, connect your Terra account to your NIH account by following the tutorial below." }), title: "Connect Terra to your NIH account" }));
9
+ return (_jsx(FormStep, { action: _jsx(ButtonPrimary, { onClick: onGotoTutorial, children: "Go to Tutorial" }), active: active, completed: completed, step: step, text: _jsx("p", { children: "Next, connect your Terra account to your NIH Researcher Auth Service (RAS) account by following the tutorial below." }), title: "Connect Terra to your NIH Researcher Auth Service (RAS) account" }));
10
10
  };
@@ -10,8 +10,9 @@ export interface ExportToTerraProps {
10
10
  fileSummaryFacetName: string;
11
11
  filters: Filters;
12
12
  formFacet: FormFacet;
13
+ isDatasetExport?: boolean;
13
14
  manifestDownloadFormat?: ManifestDownloadFormat;
14
15
  manifestDownloadFormats: ManifestDownloadFormat[];
15
16
  speciesFacetName: string;
16
17
  }
17
- export declare const ExportToTerra: ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }: ExportToTerraProps) => JSX.Element;
18
+ export declare const ExportToTerra: ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, isDatasetExport, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }: ExportToTerraProps) => JSX.Element;
@@ -6,10 +6,10 @@ import { useFileManifestFileCount } from "../../../../hooks/useFileManifest/useF
6
6
  import { useFileManifestFormat } from "../../../../hooks/useFileManifest/useFileManifestFormat";
7
7
  import { useRequestFileLocation } from "../../../../hooks/useRequestFileLocation";
8
8
  import { useRequestManifest } from "../../../../hooks/useRequestManifest/useRequestManifest";
9
- import { trackExportToTerraRequested } from "../../common/tracking";
9
+ import { trackDatasetExportToTerraRequested, trackExportToTerraRequested, } from "../../common/tracking";
10
10
  import { ExportToTerraNotStarted } from "./components/ExportToTerraNotStarted/exportToTerraNotStarted";
11
11
  import { ExportToTerraReady } from "./components/ExportToTerraReady/exportToTerraReady";
12
- export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }) => {
12
+ export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, isDatasetExport = false, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }) => {
13
13
  const { exploreState: { tabValue: entityList }, } = useExploreState();
14
14
  useFileManifest(filters, fileSummaryFacetName);
15
15
  useFileManifestFileCount(filters, speciesFacetName, fileSummaryFacetName);
@@ -18,9 +18,14 @@ export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuc
18
18
  const { data, isLoading, run } = useRequestFileLocation(requestUrl, requestMethod);
19
19
  const exportURL = useExportToTerraResponseURL(requestParams, data);
20
20
  return exportURL ? (_jsx(ExportToTerraReady, { ExportToTerraSuccess: ExportToTerraSuccess, exportURL: exportURL })) : (_jsx(ExportToTerraNotStarted, { ExportTerraForm: ExportForm, ExportToTerraStart: ExportToTerraStart, fileManifestFormatState: fileManifestFormatState, fileManifestState: fileManifestState, formFacet: formFacet, isLoading: isLoading, manifestDownloadFormats: manifestDownloadFormats, onRequestManifest: () => {
21
- // Execute GA tracking
22
- trackExportToTerraRequested(entityList);
23
- // Request manifest
21
+ // Execute GA tracking.
22
+ if (isDatasetExport) {
23
+ trackDatasetExportToTerraRequested();
24
+ }
25
+ else {
26
+ trackExportToTerraRequested(entityList);
27
+ }
28
+ // Request manifest.
24
29
  run();
25
30
  } }));
26
31
  };
@@ -4,6 +4,7 @@ import copy from "copy-to-clipboard";
4
4
  import { useDownloadStatus } from "../../../../../../../../hooks/useDownloadStatus";
5
5
  import { useFileManifestDownload } from "../../../../../../../../hooks/useFileManifest/useFileManifestDownload";
6
6
  import { useLoginGuard } from "../../../../../../../../providers/loginGuard/hook";
7
+ import { trackDatasetFileManifestRequested } from "../../../../../../common/tracking";
7
8
  import { BUTTON_PROPS } from "../../../../../../../common/Button/constants";
8
9
  import { ButtonGroup } from "../../../../../../../common/ButtonGroup/buttonGroup";
9
10
  import { ContentCopyIconSmall, DownloadIconSmall, } from "../../../../../../../common/CustomIcon/common/constants";
@@ -17,7 +18,12 @@ export const FileManifestDownload = ({ filters, }) => {
17
18
  const { fileName, isIdle, isLoading, manifestURL, requestManifest } = useFileManifestDownload(filters);
18
19
  // Prompt user for login before download and copy, if required.
19
20
  const { requireLogin } = useLoginGuard();
20
- return (_jsx(FluidPaper, { children: _jsxs(GridPaper, { children: [_jsx(SectionTitle, { children: "File Manifest" }), _jsxs(TableContainer, { children: [_jsx(Loading, { loading: isLoading, panelStyle: LOADING_PANEL_STYLE.INHERIT }), _jsx(GridTable, { gridTemplateColumns: "auto 1fr", children: _jsx(TableBody, { children: _jsx(TableRow, { children: isIdle || isLoading ? (_jsx(TableCell, { children: _jsx(Tooltip, { ...TOOLTIP_PROPS, title: message, children: _jsx("span", { children: _jsx(Button, { ...BUTTON_PROPS.PRIMARY_CONTAINED, disabled: disabled || isLoading, onClick: () => requireLogin(requestManifest), children: "Request link" }) }) }) })) : (_jsxs(_Fragment, { children: [manifestURL && (_jsx(TableCell, { children: _jsx(ButtonGroup, { Buttons: [
21
+ return (_jsx(FluidPaper, { children: _jsxs(GridPaper, { children: [_jsx(SectionTitle, { children: "File Manifest" }), _jsxs(TableContainer, { children: [_jsx(Loading, { loading: isLoading, panelStyle: LOADING_PANEL_STYLE.INHERIT }), _jsx(GridTable, { gridTemplateColumns: "auto 1fr", children: _jsx(TableBody, { children: _jsx(TableRow, { children: isIdle || isLoading ? (_jsx(TableCell, { children: _jsx(Tooltip, { ...TOOLTIP_PROPS, title: message, children: _jsx("span", { children: _jsx(Button, { ...BUTTON_PROPS.PRIMARY_CONTAINED, disabled: disabled || isLoading, onClick: () => {
22
+ requireLogin(() => {
23
+ trackDatasetFileManifestRequested();
24
+ requestManifest();
25
+ });
26
+ }, children: "Request link" }) }) }) })) : (_jsxs(_Fragment, { children: [manifestURL && (_jsx(TableCell, { children: _jsx(ButtonGroup, { Buttons: [
21
27
  _jsx(Button, { download: true, href: manifestURL, children: _jsx(DownloadIconSmall, {}) }, "download"),
22
28
  _jsx(Button, { onClick: () => copy(manifestURL), children: _jsx(ContentCopyIconSmall, {}) }, "copy"),
23
29
  ] }) })), _jsx(TableCell, { children: manifestURL
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@databiosphere/findable-ui",
3
- "version": "49.6.0",
3
+ "version": "50.1.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
@@ -25,7 +25,7 @@
25
25
  "@commitlint/cli": "^20.2.0",
26
26
  "@commitlint/config-conventional": "^20.2.0",
27
27
  "@emotion/jest": "^11.14.2",
28
- "@next/eslint-plugin-next": "^15.5.9",
28
+ "@next/eslint-plugin-next": "^15.5.13",
29
29
  "@storybook/nextjs-vite": "^10.1.10",
30
30
  "@testing-library/react": "^16.3.1",
31
31
  "@types/d3": "^7.4.3",
@@ -36,7 +36,7 @@
36
36
  "@types/react-window": "^1.8.5",
37
37
  "@typescript-eslint/eslint-plugin": "^8.50.0",
38
38
  "eslint": "^8.57.1",
39
- "eslint-config-next": "^15.5.9",
39
+ "eslint-config-next": "^15.5.13",
40
40
  "eslint-config-prettier": "^10.1.8",
41
41
  "eslint-plugin-eslint-comments": "^3.2.0",
42
42
  "eslint-plugin-jsdoc": "^61.5.0",
@@ -69,7 +69,7 @@
69
69
  "gray-matter": "^4.0.3",
70
70
  "isomorphic-dompurify": "^2.34.0",
71
71
  "ky": "^1.7.2",
72
- "next": "^15.5.9",
72
+ "next": "^15.5.13",
73
73
  "next-auth": "^4.24.13",
74
74
  "next-mdx-remote": "^5.0.0",
75
75
  "react": "^19.2.3",
@@ -7,6 +7,8 @@ export type DataLayer = any;
7
7
  export enum EVENT_NAME {
8
8
  BULK_DOWNLOAD_REQUESTED = "bulk_download_requested",
9
9
  CHAT_SUBMITTED = "chat_submitted",
10
+ DATASET_ANALYZE_IN_TERRA_REQUESTED = "dataset_analyze_in_terra_requested",
11
+ DATASET_FILE_MANIFEST_REQUESTED = "dataset_file_manifest_requested",
10
12
  ENTITY_SELECTED = "entity_selected",
11
13
  ENTITY_TABLE_PAGINATED = "entity_table_paginated",
12
14
  ENTITY_TABLE_SORTED = "entity_table_sorted",
@@ -17,6 +17,20 @@ export function trackBulkDownloadRequested(
17
17
  });
18
18
  }
19
19
 
20
+ /**
21
+ * Executes event tracking for the dataset file manifest export.
22
+ */
23
+ export function trackDatasetFileManifestRequested(): void {
24
+ track(EVENT_NAME.DATASET_FILE_MANIFEST_REQUESTED);
25
+ }
26
+
27
+ /**
28
+ * Executes event tracking for the dataset Terra export.
29
+ */
30
+ export function trackDatasetExportToTerraRequested(): void {
31
+ track(EVENT_NAME.DATASET_ANALYZE_IN_TERRA_REQUESTED);
32
+ }
33
+
20
34
  /**
21
35
  * Executes event tracking for the file manifest export.
22
36
  * @param entity_name - Entity (tab) name.
@@ -1,5 +1,4 @@
1
1
  import { JSX, ElementType } from "react";
2
- import { ButtonPrimary } from "../../../../../common/Button/components/ButtonPrimary/buttonPrimary";
3
2
  import { FluidPaper } from "../../../../../common/Paper/paper.styles";
4
3
  import {
5
4
  ANCHOR_TARGET,
@@ -10,6 +9,8 @@ import {
10
9
  SectionActions,
11
10
  SectionContent,
12
11
  } from "../../../../export.styles";
12
+ import { BUTTON_PROPS } from "../../../../../../styles/common/mui/button";
13
+ import { Button, Link } from "@mui/material";
13
14
 
14
15
  export interface ExportToTerraReadyProps {
15
16
  ExportToTerraSuccess: ElementType;
@@ -20,13 +21,6 @@ export const ExportToTerraReady = ({
20
21
  ExportToTerraSuccess,
21
22
  exportURL,
22
23
  }: ExportToTerraReadyProps): JSX.Element => {
23
- const onOpenTerra = (): void => {
24
- window.open(
25
- exportURL,
26
- ANCHOR_TARGET.BLANK,
27
- REL_ATTRIBUTE.NO_OPENER_NO_REFERRER,
28
- );
29
- };
30
24
  return (
31
25
  <FluidPaper>
32
26
  <Section>
@@ -34,7 +28,16 @@ export const ExportToTerraReady = ({
34
28
  <ExportToTerraSuccess />
35
29
  </SectionContent>
36
30
  <SectionActions>
37
- <ButtonPrimary onClick={onOpenTerra}>Open Terra</ButtonPrimary>
31
+ <Button
32
+ color={BUTTON_PROPS.COLOR.PRIMARY}
33
+ component={Link}
34
+ href={exportURL}
35
+ rel={REL_ATTRIBUTE.NO_OPENER_NO_REFERRER}
36
+ target={ANCHOR_TARGET.BLANK}
37
+ variant={BUTTON_PROPS.VARIANT.CONTAINED}
38
+ >
39
+ Open Terra
40
+ </Button>
38
41
  </SectionActions>
39
42
  </Section>
40
43
  </FluidPaper>
@@ -34,11 +34,11 @@ export const ConnectTerraToNIHAccount = ({
34
34
  step={step}
35
35
  text={
36
36
  <p>
37
- Next, connect your Terra account to your NIH account by following the
38
- tutorial below.
37
+ Next, connect your Terra account to your NIH Researcher Auth Service
38
+ (RAS) account by following the tutorial below.
39
39
  </p>
40
40
  }
41
- title="Connect Terra to your NIH account"
41
+ title="Connect Terra to your NIH Researcher Auth Service (RAS) account"
42
42
  />
43
43
  );
44
44
  };
@@ -9,7 +9,10 @@ import { useRequestFileLocation } from "../../../../hooks/useRequestFileLocation
9
9
  import { useRequestManifest } from "../../../../hooks/useRequestManifest/useRequestManifest";
10
10
  import { FileManifestState } from "../../../../providers/fileManifestState";
11
11
  import { FormFacet, ManifestDownloadFormat } from "../../common/entities";
12
- import { trackExportToTerraRequested } from "../../common/tracking";
12
+ import {
13
+ trackDatasetExportToTerraRequested,
14
+ trackExportToTerraRequested,
15
+ } from "../../common/tracking";
13
16
  import { ExportToTerraNotStarted } from "./components/ExportToTerraNotStarted/exportToTerraNotStarted";
14
17
  import { ExportToTerraReady } from "./components/ExportToTerraReady/exportToTerraReady";
15
18
 
@@ -21,6 +24,7 @@ export interface ExportToTerraProps {
21
24
  fileSummaryFacetName: string;
22
25
  filters: Filters; // Initializes export to terra filters.
23
26
  formFacet: FormFacet;
27
+ isDatasetExport?: boolean;
24
28
  manifestDownloadFormat?: ManifestDownloadFormat;
25
29
  manifestDownloadFormats: ManifestDownloadFormat[];
26
30
  speciesFacetName: string;
@@ -34,6 +38,7 @@ export const ExportToTerra = ({
34
38
  fileSummaryFacetName,
35
39
  filters,
36
40
  formFacet,
41
+ isDatasetExport = false,
37
42
  manifestDownloadFormat,
38
43
  manifestDownloadFormats,
39
44
  speciesFacetName,
@@ -68,9 +73,13 @@ export const ExportToTerra = ({
68
73
  isLoading={isLoading}
69
74
  manifestDownloadFormats={manifestDownloadFormats}
70
75
  onRequestManifest={(): void => {
71
- // Execute GA tracking
72
- trackExportToTerraRequested(entityList);
73
- // Request manifest
76
+ // Execute GA tracking.
77
+ if (isDatasetExport) {
78
+ trackDatasetExportToTerraRequested();
79
+ } else {
80
+ trackExportToTerraRequested(entityList);
81
+ }
82
+ // Request manifest.
74
83
  run();
75
84
  }}
76
85
  />
@@ -5,6 +5,7 @@ import { Filters } from "../../../../../../../../common/entities";
5
5
  import { useDownloadStatus } from "../../../../../../../../hooks/useDownloadStatus";
6
6
  import { useFileManifestDownload } from "../../../../../../../../hooks/useFileManifest/useFileManifestDownload";
7
7
  import { useLoginGuard } from "../../../../../../../../providers/loginGuard/hook";
8
+ import { trackDatasetFileManifestRequested } from "../../../../../../common/tracking";
8
9
  import { BUTTON_PROPS } from "../../../../../../../common/Button/constants";
9
10
  import { ButtonGroup } from "../../../../../../../common/ButtonGroup/buttonGroup";
10
11
  import {
@@ -59,7 +60,12 @@ export const FileManifestDownload = ({
59
60
  <Button
60
61
  {...BUTTON_PROPS.PRIMARY_CONTAINED}
61
62
  disabled={disabled || isLoading}
62
- onClick={() => requireLogin(requestManifest)}
63
+ onClick={(): void => {
64
+ requireLogin(() => {
65
+ trackDatasetFileManifestRequested();
66
+ requestManifest();
67
+ });
68
+ }}
63
69
  >
64
70
  Request link
65
71
  </Button>