synapse-react-client 4.0.6 → 4.0.8
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/dist/SWC.index.js +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js +3 -4
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +2 -3
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.css +1 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.d.ts +8 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.d.ts.map +1 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js +21 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss +32 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss.js +14 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss.js.map +1 -0
- package/dist/components/ColoredBulletListItem/index.d.ts +5 -0
- package/dist/components/ColoredBulletListItem/index.d.ts.map +1 -0
- package/dist/components/ColoredBulletListItem/index.js +6 -0
- package/dist/components/ColoredBulletListItem/index.js.map +1 -0
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +3 -4
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.d.ts.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js +120 -46
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.d.ts +7 -0
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.d.ts.map +1 -0
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js +132 -0
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -0
- package/dist/components/DataGrid/DataGrid.d.ts +2 -0
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGrid.js +69 -67
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/DataGridTypes.d.ts +8 -2
- package/dist/components/DataGrid/DataGridTypes.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGridTypes.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +2 -3
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +184 -164
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +2 -3
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.d.ts +15 -0
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.d.ts.map +1 -0
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.js +55 -0
- package/dist/components/DataGrid/hooks/useGridReplicaUsers.js.map +1 -0
- package/dist/components/DataGrid/hooks/useRemoteSelections.d.ts +16 -0
- package/dist/components/DataGrid/hooks/useRemoteSelections.d.ts.map +1 -0
- package/dist/components/DataGrid/hooks/useRemoteSelections.js +30 -0
- package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -0
- package/dist/components/DataGrid/utils/DataGridUtils.js +31 -31
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js +28 -23
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +90 -49
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.d.ts +14 -0
- package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js +24 -0
- package/dist/components/DataGrid/utils/enrichRowsWithChangeInfo.js.map +1 -0
- package/dist/components/DataGrid/utils/getCellAuthorSid.d.ts +7 -0
- package/dist/components/DataGrid/utils/getCellAuthorSid.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/getCellAuthorSid.js +11 -0
- package/dist/components/DataGrid/utils/getCellAuthorSid.js.map +1 -0
- package/dist/components/DataGrid/utils/getCellClassName.d.ts +2 -0
- package/dist/components/DataGrid/utils/getCellClassName.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.js +23 -12
- package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
- package/dist/components/DataGrid/utils/getChangeTooltipText.d.ts +7 -0
- package/dist/components/DataGrid/utils/getChangeTooltipText.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/getChangeTooltipText.js +18 -0
- package/dist/components/DataGrid/utils/getChangeTooltipText.js.map +1 -0
- package/dist/components/DataGrid/utils/getReplicaCategory.d.ts +12 -0
- package/dist/components/DataGrid/utils/getReplicaCategory.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/getReplicaCategory.js +13 -0
- package/dist/components/DataGrid/utils/getReplicaCategory.js.map +1 -0
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.d.ts +15 -0
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js +43 -0
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -0
- package/dist/components/DialogBase.d.ts +3 -1
- package/dist/components/DialogBase.d.ts.map +1 -1
- package/dist/components/DialogBase.js +75 -56
- package/dist/components/DialogBase.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js +2 -3
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +2 -3
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +2 -3
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +3 -4
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/HeaderCard.js +2 -3
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +168 -165
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +3 -4
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.d.ts +1 -0
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.d.ts.map +1 -1
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js +23 -16
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
- package/dist/components/TextField/TextField.css +1 -1
- package/dist/components/TextField/TextField.d.ts +1 -0
- package/dist/components/TextField/TextField.d.ts.map +1 -1
- package/dist/components/TextField/TextField.js +32 -20
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextField.module.scss +7 -0
- package/dist/components/TextField/TextField.module.scss.js +5 -3
- package/dist/components/TextField/TextField.module.scss.js.map +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +2 -3
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +242 -240
- package/dist/components/index.js.map +1 -1
- package/dist/components/styled/StyledFormControl.js +1 -1
- package/dist/components/styled/StyledFormControl.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +2 -3
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +2 -3
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/features/curator/GridPage/GridPage.js +2 -3
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +2 -3
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +49 -180
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +2 -3
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +4 -8
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
- package/dist/index.js +306 -304
- package/dist/index.js.map +1 -1
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +49 -0
- package/dist/synapse-client/SynapseClient.d.ts +1 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +3 -2
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/index.js +42 -41
- package/dist/synapse-queries/user/index.js +17 -16
- package/dist/synapse-queries/user/useUserBundle.d.ts +9 -0
- package/dist/synapse-queries/user/useUserBundle.d.ts.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js +45 -37
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/theme/palette/Palettes.d.ts +2 -0
- package/dist/theme/palette/Palettes.d.ts.map +1 -1
- package/dist/theme/palette/Palettes.js +46 -40
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/assets/ArcusBioIcon.svg +0 -1
- package/dist/assets/ArcusBioIcon.svg.js +0 -7
- package/dist/assets/ArcusBioIcon.svg.js.map +0 -1
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { spreadSx as
|
|
3
|
-
import
|
|
4
|
-
import { Dialog as C, DialogContent as
|
|
1
|
+
import { jsxs as p, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { spreadSx as f } from "../theme/spreadSx.js";
|
|
3
|
+
import B from "@mui/icons-material/Close";
|
|
4
|
+
import { Dialog as C, DialogContent as T, DialogActions as M, DialogTitle as P, Stack as w, Box as a, IconButton as E } from "@mui/material";
|
|
5
5
|
import { HelpPopover as S } from "./HelpPopover/HelpPopover.js";
|
|
6
6
|
const L = {}, O = "close", _ = { color: "grey.700" };
|
|
7
|
-
function
|
|
8
|
-
sx:
|
|
9
|
-
onClick:
|
|
7
|
+
function v({
|
|
8
|
+
sx: i = _,
|
|
9
|
+
onClick: t
|
|
10
10
|
}) {
|
|
11
|
-
return /* @__PURE__ */ o(
|
|
11
|
+
return /* @__PURE__ */ o(E, { sx: i, onClick: t, "aria-label": O, children: /* @__PURE__ */ o(B, {}) });
|
|
12
12
|
}
|
|
13
|
-
function
|
|
13
|
+
function y(i) {
|
|
14
14
|
const {
|
|
15
|
-
title:
|
|
16
|
-
titleHelpPopoverProps:
|
|
17
|
-
hasCloseButton:
|
|
15
|
+
title: t,
|
|
16
|
+
titleHelpPopoverProps: e,
|
|
17
|
+
hasCloseButton: r = !0,
|
|
18
18
|
onCancel: n
|
|
19
|
-
} =
|
|
20
|
-
return /* @__PURE__ */ o(
|
|
21
|
-
|
|
19
|
+
} = i;
|
|
20
|
+
return /* @__PURE__ */ o(P, { children: /* @__PURE__ */ p(
|
|
21
|
+
w,
|
|
22
22
|
{
|
|
23
23
|
direction: "row",
|
|
24
24
|
sx: {
|
|
@@ -26,77 +26,96 @@ function v(t) {
|
|
|
26
26
|
gap: "5px"
|
|
27
27
|
},
|
|
28
28
|
children: [
|
|
29
|
-
|
|
29
|
+
t,
|
|
30
30
|
/* @__PURE__ */ o(
|
|
31
|
-
|
|
31
|
+
a,
|
|
32
32
|
{
|
|
33
33
|
component: "span",
|
|
34
34
|
sx: {
|
|
35
35
|
fontSize: "14px"
|
|
36
36
|
},
|
|
37
|
-
children:
|
|
37
|
+
children: e && /* @__PURE__ */ o(S, { ...e })
|
|
38
38
|
}
|
|
39
39
|
),
|
|
40
|
-
/* @__PURE__ */ o(
|
|
41
|
-
|
|
40
|
+
/* @__PURE__ */ o(a, { sx: { flexGrow: 1 } }),
|
|
41
|
+
r && /* @__PURE__ */ o(v, { onClick: () => n() })
|
|
42
42
|
]
|
|
43
43
|
}
|
|
44
44
|
) });
|
|
45
45
|
}
|
|
46
|
-
const
|
|
47
|
-
open:
|
|
48
|
-
title:
|
|
49
|
-
content:
|
|
50
|
-
actions:
|
|
46
|
+
const U = ({
|
|
47
|
+
open: i,
|
|
48
|
+
title: t,
|
|
49
|
+
content: e,
|
|
50
|
+
actions: r,
|
|
51
51
|
className: n,
|
|
52
52
|
onCancel: l,
|
|
53
|
-
hasCloseButton:
|
|
54
|
-
titleHelpPopoverProps:
|
|
55
|
-
maxWidth:
|
|
56
|
-
fullWidth:
|
|
57
|
-
sx:
|
|
58
|
-
contentProps:
|
|
59
|
-
DialogProps:
|
|
60
|
-
|
|
53
|
+
hasCloseButton: s,
|
|
54
|
+
titleHelpPopoverProps: c,
|
|
55
|
+
maxWidth: g = "sm",
|
|
56
|
+
fullWidth: d = !0,
|
|
57
|
+
sx: u,
|
|
58
|
+
contentProps: m = L,
|
|
59
|
+
DialogProps: x,
|
|
60
|
+
dense: h = !1
|
|
61
|
+
}) => /* @__PURE__ */ p(
|
|
61
62
|
C,
|
|
62
63
|
{
|
|
63
|
-
fullWidth:
|
|
64
|
-
maxWidth:
|
|
65
|
-
open:
|
|
64
|
+
fullWidth: d,
|
|
65
|
+
maxWidth: g,
|
|
66
|
+
open: i,
|
|
66
67
|
className: n,
|
|
67
68
|
onClose: () => l(),
|
|
68
|
-
sx:
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
sx: f(
|
|
70
|
+
u,
|
|
71
|
+
h ? {
|
|
71
72
|
".MuiDialog-container > .MuiPaper-root": {
|
|
72
|
-
padding: "
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
padding: "10px 30px"
|
|
74
|
+
},
|
|
75
|
+
"& .MuiDialogTitle-root": {
|
|
76
|
+
py: 1.5,
|
|
77
|
+
typography: "headline3"
|
|
78
|
+
},
|
|
79
|
+
"& .MuiDialogContent-root": {
|
|
80
|
+
pt: 1
|
|
81
|
+
},
|
|
82
|
+
"& .MuiDialogActions-root": {
|
|
83
|
+
pb: 2
|
|
77
84
|
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
85
|
+
} : void 0,
|
|
86
|
+
(D) => ({
|
|
87
|
+
[D.breakpoints.down("sm")]: {
|
|
88
|
+
width: "100vw",
|
|
89
|
+
".MuiDialog-container > .MuiPaper-root": {
|
|
90
|
+
padding: "33px",
|
|
91
|
+
margin: 0,
|
|
92
|
+
width: "100%",
|
|
93
|
+
height: "100%",
|
|
94
|
+
maxHeight: "unset"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
})
|
|
98
|
+
),
|
|
99
|
+
...x,
|
|
81
100
|
children: [
|
|
82
101
|
/* @__PURE__ */ o(
|
|
83
|
-
|
|
102
|
+
y,
|
|
84
103
|
{
|
|
85
|
-
title:
|
|
86
|
-
titleHelpPopoverProps:
|
|
87
|
-
hasCloseButton:
|
|
104
|
+
title: t,
|
|
105
|
+
titleHelpPopoverProps: c,
|
|
106
|
+
hasCloseButton: s,
|
|
88
107
|
onCancel: l
|
|
89
108
|
}
|
|
90
109
|
),
|
|
91
|
-
/* @__PURE__ */ o(
|
|
92
|
-
|
|
110
|
+
/* @__PURE__ */ o(T, { ...m, children: e }),
|
|
111
|
+
r && /* @__PURE__ */ o(M, { children: r })
|
|
93
112
|
]
|
|
94
113
|
}
|
|
95
114
|
);
|
|
96
115
|
export {
|
|
97
116
|
O as CLOSE_BUTTON_LABEL,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
117
|
+
v as CloseButton,
|
|
118
|
+
U as DialogBase,
|
|
119
|
+
y as DialogBaseTitle
|
|
101
120
|
};
|
|
102
121
|
//# sourceMappingURL=DialogBase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogBase.js","sources":["../../src/components/DialogBase.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport CloseIcon from '@mui/icons-material/Close'\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentProps,\n DialogProps,\n DialogTitle,\n IconButton,\n Stack,\n SxProps,\n} from '@mui/material'\nimport React, { ReactNode } from 'react'\nimport { HelpPopover, HelpPopoverProps } from './HelpPopover/HelpPopover'\n\nconst EMPTY_OBJECT = {}\n\nexport type CloseButtonProps = {\n sx?: SxProps\n onClick?: () => void\n}\n\nexport const CLOSE_BUTTON_LABEL = 'close'\nconst DEFAULT_CLOSEBUTTON_SX: SxProps = { color: 'grey.700' }\n\nexport function CloseButton({\n sx = DEFAULT_CLOSEBUTTON_SX,\n onClick,\n}: CloseButtonProps): React.JSX.Element {\n return (\n <IconButton sx={sx} onClick={onClick} aria-label={CLOSE_BUTTON_LABEL}>\n <CloseIcon />\n </IconButton>\n )\n}\n\nexport type DialogBaseTitleProps = {\n title: ReactNode\n titleHelpPopoverProps?: HelpPopoverProps\n hasCloseButton?: boolean\n onCancel: () => void\n}\n\nexport function DialogBaseTitle(props: DialogBaseTitleProps): React.ReactNode {\n const {\n title,\n titleHelpPopoverProps,\n hasCloseButton = true,\n onCancel,\n } = props\n return (\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n {title}\n <Box\n component={'span'}\n sx={{\n fontSize: '14px',\n }}\n >\n {titleHelpPopoverProps && <HelpPopover {...titleHelpPopoverProps} />}\n </Box>\n <Box sx={{ flexGrow: 1 }} />\n {hasCloseButton && <CloseButton onClick={() => onCancel()} />}\n </Stack>\n </DialogTitle>\n )\n}\n\nexport type DialogBaseProps = DialogBaseTitleProps & {\n open: boolean\n content: ReactNode\n actions?: ReactNode\n className?: string\n onCancel: () => void\n maxWidth?: DialogProps['maxWidth']\n fullWidth?: boolean\n sx?: DialogProps['sx']\n contentProps?: DialogContentProps\n DialogProps?: Partial<DialogProps>\n}\n\n/**\n * A dialog built using MUI components.\n */\nexport const DialogBase = ({\n open,\n title,\n content,\n actions,\n className,\n onCancel,\n hasCloseButton,\n titleHelpPopoverProps,\n maxWidth = 'sm',\n fullWidth = true,\n sx,\n contentProps = EMPTY_OBJECT,\n DialogProps,\n}: DialogBaseProps): React.ReactNode => {\n return (\n <Dialog\n fullWidth={fullWidth}\n maxWidth={maxWidth}\n open={open}\n className={className}\n onClose={() => onCancel()}\n sx={spreadSx(sx
|
|
1
|
+
{"version":3,"file":"DialogBase.js","sources":["../../src/components/DialogBase.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport CloseIcon from '@mui/icons-material/Close'\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentProps,\n DialogProps,\n DialogTitle,\n IconButton,\n Stack,\n SxProps,\n} from '@mui/material'\nimport React, { ReactNode } from 'react'\nimport { HelpPopover, HelpPopoverProps } from './HelpPopover/HelpPopover'\n\nconst EMPTY_OBJECT = {}\n\nexport type CloseButtonProps = {\n sx?: SxProps\n onClick?: () => void\n}\n\nexport const CLOSE_BUTTON_LABEL = 'close'\nconst DEFAULT_CLOSEBUTTON_SX: SxProps = { color: 'grey.700' }\n\nexport function CloseButton({\n sx = DEFAULT_CLOSEBUTTON_SX,\n onClick,\n}: CloseButtonProps): React.JSX.Element {\n return (\n <IconButton sx={sx} onClick={onClick} aria-label={CLOSE_BUTTON_LABEL}>\n <CloseIcon />\n </IconButton>\n )\n}\n\nexport type DialogBaseTitleProps = {\n title: ReactNode\n titleHelpPopoverProps?: HelpPopoverProps\n hasCloseButton?: boolean\n onCancel: () => void\n}\n\nexport function DialogBaseTitle(props: DialogBaseTitleProps): React.ReactNode {\n const {\n title,\n titleHelpPopoverProps,\n hasCloseButton = true,\n onCancel,\n } = props\n return (\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n {title}\n <Box\n component={'span'}\n sx={{\n fontSize: '14px',\n }}\n >\n {titleHelpPopoverProps && <HelpPopover {...titleHelpPopoverProps} />}\n </Box>\n <Box sx={{ flexGrow: 1 }} />\n {hasCloseButton && <CloseButton onClick={() => onCancel()} />}\n </Stack>\n </DialogTitle>\n )\n}\n\nexport type DialogBaseProps = DialogBaseTitleProps & {\n open: boolean\n content: ReactNode\n actions?: ReactNode\n className?: string\n onCancel: () => void\n maxWidth?: DialogProps['maxWidth']\n fullWidth?: boolean\n sx?: DialogProps['sx']\n contentProps?: DialogContentProps\n DialogProps?: Partial<DialogProps>\n /** If true, reduces the vertical padding of the title, content, and actions for a more compact layout. */\n dense?: boolean\n}\n\n/**\n * A dialog built using MUI components.\n */\nexport const DialogBase = ({\n open,\n title,\n content,\n actions,\n className,\n onCancel,\n hasCloseButton,\n titleHelpPopoverProps,\n maxWidth = 'sm',\n fullWidth = true,\n sx,\n contentProps = EMPTY_OBJECT,\n DialogProps,\n dense = false,\n}: DialogBaseProps): React.ReactNode => {\n return (\n <Dialog\n fullWidth={fullWidth}\n maxWidth={maxWidth}\n open={open}\n className={className}\n onClose={() => onCancel()}\n sx={spreadSx(\n sx,\n dense\n ? {\n '.MuiDialog-container > .MuiPaper-root': {\n padding: '10px 30px',\n },\n '& .MuiDialogTitle-root': {\n py: 1.5,\n typography: 'headline3',\n },\n '& .MuiDialogContent-root': {\n pt: 1,\n },\n '& .MuiDialogActions-root': {\n pb: 2,\n },\n }\n : undefined,\n theme => ({\n [theme.breakpoints.down('sm')]: {\n width: '100vw',\n '.MuiDialog-container > .MuiPaper-root': {\n padding: '33px',\n margin: 0,\n width: '100%',\n height: '100%',\n maxHeight: 'unset',\n },\n },\n }),\n )}\n {...DialogProps}\n >\n <DialogBaseTitle\n title={title}\n titleHelpPopoverProps={titleHelpPopoverProps}\n hasCloseButton={hasCloseButton}\n onCancel={onCancel}\n />\n <DialogContent {...contentProps}>{content}</DialogContent>\n {actions && <DialogActions>{actions}</DialogActions>}\n </Dialog>\n )\n}\n"],"names":["EMPTY_OBJECT","CLOSE_BUTTON_LABEL","DEFAULT_CLOSEBUTTON_SX","CloseButton","sx","onClick","jsx","IconButton","CloseIcon","DialogBaseTitle","props","title","titleHelpPopoverProps","hasCloseButton","onCancel","DialogTitle","jsxs","Stack","Box","HelpPopover","DialogBase","open","content","actions","className","maxWidth","fullWidth","contentProps","DialogProps","dense","Dialog","spreadSx","theme","DialogContent","DialogActions"],"mappings":"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"}
|
|
@@ -50,7 +50,6 @@ import "../../assets/icons/account-validated.svg.js";
|
|
|
50
50
|
import "../../utils/functions/DateFormatter.js";
|
|
51
51
|
import "@react-hookz/web";
|
|
52
52
|
import "dayjs";
|
|
53
|
-
import "../../assets/ArcusBioIcon.svg.js";
|
|
54
53
|
import "@mui/material/SvgIcon";
|
|
55
54
|
import "../../assets/icons/AccessPending.svg.js";
|
|
56
55
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
@@ -215,7 +214,7 @@ import "@mui/material/Grid";
|
|
|
215
214
|
import "@mui/icons-material/ArrowForwardIos";
|
|
216
215
|
import "../PortalAclEditor/PortalAclEditor.js";
|
|
217
216
|
import "../SynapseHomepageV2/HomepageStyles.js";
|
|
218
|
-
function
|
|
217
|
+
function ci() {
|
|
219
218
|
const o = /* @__PURE__ */ t(n, { width: "80%" }), r = /* @__PURE__ */ m(e, { gap: 2, py: 2, children: [
|
|
220
219
|
/* @__PURE__ */ t(i, {}),
|
|
221
220
|
/* @__PURE__ */ t(i, {}),
|
|
@@ -233,6 +232,6 @@ function li() {
|
|
|
233
232
|
);
|
|
234
233
|
}
|
|
235
234
|
export {
|
|
236
|
-
|
|
235
|
+
ci as default
|
|
237
236
|
};
|
|
238
237
|
//# sourceMappingURL=EcosystemSkeleton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EcosystemSkeleton.js","sources":["../../../src/components/Ecosystem/EcosystemSkeleton.tsx"],"sourcesContent":["import EcosystemLayout from '@/components/Ecosystem/EcosystemLayout'\nimport { SkeletonParagraph } from '@/components/index'\nimport { Stack } from '@mui/material'\nimport Skeleton from '@mui/material/Skeleton'\n\nfunction EcosystemSkeleton() {\n const skeletonTitle = <Skeleton width={'80%'} />\n const skeletonContent = (\n <Stack gap={2} py={2}>\n <SkeletonParagraph />\n <SkeletonParagraph />\n <SkeletonParagraph />\n </Stack>\n )\n return (\n <EcosystemLayout\n config={[\n { title: skeletonTitle, content: skeletonContent },\n { title: skeletonTitle, content: skeletonContent },\n { title: skeletonTitle, content: skeletonContent },\n ]}\n />\n )\n}\n\nexport default EcosystemSkeleton\n"],"names":["EcosystemSkeleton","skeletonTitle","jsx","Skeleton","skeletonContent","jsxs","Stack","SkeletonParagraph","EcosystemLayout"],"mappings":"
|
|
1
|
+
{"version":3,"file":"EcosystemSkeleton.js","sources":["../../../src/components/Ecosystem/EcosystemSkeleton.tsx"],"sourcesContent":["import EcosystemLayout from '@/components/Ecosystem/EcosystemLayout'\nimport { SkeletonParagraph } from '@/components/index'\nimport { Stack } from '@mui/material'\nimport Skeleton from '@mui/material/Skeleton'\n\nfunction EcosystemSkeleton() {\n const skeletonTitle = <Skeleton width={'80%'} />\n const skeletonContent = (\n <Stack gap={2} py={2}>\n <SkeletonParagraph />\n <SkeletonParagraph />\n <SkeletonParagraph />\n </Stack>\n )\n return (\n <EcosystemLayout\n config={[\n { title: skeletonTitle, content: skeletonContent },\n { title: skeletonTitle, content: skeletonContent },\n { title: skeletonTitle, content: skeletonContent },\n ]}\n />\n )\n}\n\nexport default EcosystemSkeleton\n"],"names":["EcosystemSkeleton","skeletonTitle","jsx","Skeleton","skeletonContent","jsxs","Stack","SkeletonParagraph","EcosystemLayout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAASA,KAAoB;AAC3B,QAAMC,IAAgB,gBAAAC,EAACC,GAAA,EAAS,OAAO,MAAA,CAAO,GACxCC,IACJ,gBAAAC,EAACC,GAAA,EAAM,KAAK,GAAG,IAAI,GACjB,UAAA;AAAA,IAAA,gBAAAJ,EAACK,GAAA,EAAkB;AAAA,sBAClBA,GAAA,EAAkB;AAAA,sBAClBA,GAAA,CAAA,CAAkB;AAAA,EAAA,GACrB;AAEF,SACE,gBAAAL;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,QACN,EAAE,OAAOP,GAAe,SAASG,EAAA;AAAA,QACjC,EAAE,OAAOH,GAAe,SAASG,EAAA;AAAA,QACjC,EAAE,OAAOH,GAAe,SAASG,EAAA;AAAA,MAAgB;AAAA,IACnD;AAAA,EAAA;AAGN;"}
|
|
@@ -32,7 +32,6 @@ import "react-router";
|
|
|
32
32
|
import "../QueryContext/QueryContext.js";
|
|
33
33
|
import { useSuspenseGetQueryMetadata as j } from "../QueryWrapper/useGetQueryMetadata.js";
|
|
34
34
|
import { useQueryVisualizationContext as q } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
35
|
-
import "../../assets/ArcusBioIcon.svg.js";
|
|
36
35
|
import "@mui/material/SvgIcon";
|
|
37
36
|
import "../../assets/icons/AccessPending.svg.js";
|
|
38
37
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
@@ -237,7 +236,7 @@ function rt(a) {
|
|
|
237
236
|
) }, r))
|
|
238
237
|
] });
|
|
239
238
|
}
|
|
240
|
-
function
|
|
239
|
+
function Pr(a) {
|
|
241
240
|
return /* @__PURE__ */ t(
|
|
242
241
|
H,
|
|
243
242
|
{
|
|
@@ -247,6 +246,6 @@ function Tr(a) {
|
|
|
247
246
|
);
|
|
248
247
|
}
|
|
249
248
|
export {
|
|
250
|
-
|
|
249
|
+
Pr as default
|
|
251
250
|
};
|
|
252
251
|
//# sourceMappingURL=FacetPlotsCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPlotsCard.js","sources":["../../../src/components/FeaturedDataTabs/FacetPlotsCard.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Divider,\n Paper,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValueCount,\n FacetColumnResultValues,\n} from '@sage-bionetworks/synapse-types'\nimport { useSuspenseQuery } from '@tanstack/react-query'\nimport { times } from 'lodash-es'\nimport Plotly from 'plotly.js-basic-dist'\nimport { Fragment, Suspense, useMemo } from 'react'\nimport Plot from '../Plot/Plot'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ShowMore } from '../row_renderers/utils'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport {\n extractPlotDataArray,\n getPlotStyle,\n PlotType,\n} from '../widgets/facet-nav/FacetNavPanel'\nimport { FacetPlotLegendTable } from '../widgets/facet-nav/FacetPlotLegendTable'\nimport { getFacets } from '../widgets/facet-nav/useFacetPlots'\nimport {\n FACET_PLOTS_CARD_CLASSNAME,\n FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME,\n FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME,\n FacetPlotsCardPlotContainer,\n FacetPlotsCardTitleContainer,\n} from './FacetPlotsCardGrid'\nimport { useMeasure } from '@react-hookz/web'\n\nexport type FacetPlotsCardProps = {\n title?: string\n description?: string\n facetsToPlot?: string[]\n detailsPagePath?: string\n plotType?: PlotType\n}\n\nconst layout: Partial<Plotly.Layout> = {\n showlegend: false,\n annotations: [],\n margin: { l: 0, r: 0, b: 0, t: 0, pad: 0 },\n yaxis: {\n visible: false,\n showgrid: false,\n },\n xaxis: {\n visible: false,\n showgrid: false,\n },\n}\n\nfunction LoadingCard(props: { numPlots: number }) {\n const { numPlots } = props\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Skeleton width={'60%'} height={'24px'} />\n\n <SkeletonParagraph numRows={5} />\n\n <Skeleton width={'40%'}>\n <Button variant={'contained'}>Explore</Button>\n </Skeleton>\n </FacetPlotsCardTitleContainer>\n {times(numPlots).map(index => (\n <FacetPlotsCardPlotContainer\n key={index}\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n py: 3,\n gridRow: `plot${index}`,\n }}\n >\n <Skeleton width={'100%'} height={'300px'} />\n <SkeletonTable numRows={4} numCols={2} />\n </FacetPlotsCardPlotContainer>\n ))}\n </Paper>\n )\n}\n\nfunction FacetPlotsCard(props: FacetPlotsCardProps) {\n const {\n title,\n description,\n facetsToPlot,\n detailsPagePath,\n plotType = 'PIE',\n } = props\n const { accessToken } = useSynapseContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { getColumnDisplayName } = useQueryVisualizationContext()\n const [plotContainerMeasurements, plotContainerRef] = useMeasure()\n\n const facetDataArray = useMemo(() => {\n if (!facetsToPlot) {\n return []\n }\n\n return getFacets(queryMetadata, facetsToPlot)\n }, [facetsToPlot, queryMetadata])\n\n const currentLayout: Partial<Plotly.Layout> = useMemo(() => {\n return {\n ...layout,\n barmode: plotType === 'STACKED_HORIZONTAL_BAR' ? 'stack' : undefined,\n }\n }, [plotType])\n const maxPlotHeight = plotType === 'STACKED_HORIZONTAL_BAR' ? 50 : 150\n const { data: facetPlotDataArray } = useSuspenseQuery({\n queryKey: ['facetPlotDataArray', facetsToPlot, facetDataArray],\n queryFn: async () => {\n if (!facetsToPlot) {\n return []\n }\n\n const getColumnType = (\n facetToPlot: FacetColumnResult,\n ): ColumnTypeEnum | undefined =>\n queryMetadata.columnModels!.find(\n columnModel => columnModel.name === facetToPlot.columnName,\n )?.columnType as ColumnTypeEnum\n\n return Promise.all(\n facetDataArray.map(async (item, index) => {\n const plotData = await extractPlotDataArray(\n item as FacetColumnResultValues,\n getColumnType(item),\n index + 1, //individual plot rgbIndex\n plotType,\n accessToken,\n )\n return plotData\n }),\n )\n },\n })\n\n const selectedFacetValue = useMemo(() => {\n if (!facetsToPlot) {\n return ''\n }\n\n // If we are showing a facet selection based card, then set the selectedFacetValue. For example, facet column \"study\" with value \"ROSMAP\"\n const selectedFacet: FacetColumnResultValueCount | undefined = queryMetadata\n ?.facets!.map(item => {\n const facetValues: FacetColumnResultValueCount[] = (\n item as FacetColumnResultValues\n ).facetValues\n if (facetValues) {\n const filteredFacetValues: FacetColumnResultValueCount[] =\n facetValues.filter(facetValue => {\n return facetValue.isSelected\n })\n return filteredFacetValues.length > 0\n ? filteredFacetValues[0]\n : undefined\n } else {\n return undefined\n }\n })\n .filter(x => x !== undefined)[0]\n\n if (selectedFacet && selectedFacet.value) {\n return selectedFacet?.value\n }\n return ''\n }, [facetsToPlot, queryMetadata?.facets])\n\n const isShowingMultiplePlots = facetPlotDataArray.length > 1\n const cardTitle =\n title ??\n (isShowingMultiplePlots\n ? selectedFacetValue\n : getColumnDisplayName(facetDataArray[0].columnName))\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME} sx={{ overflow: 'hidden' }}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Typography variant={'headline1'}>{cardTitle}</Typography>\n {description && (\n <Typography variant={'body1'} sx={{ color: 'grey.700', my: 2 }}>\n <ShowMore summary={description} maxCharacterCount={200} />\n </Typography>\n )}\n\n {detailsPagePath && selectedFacetValue && (\n <Box sx={{ my: 2 }}>\n <Button\n variant={'contained'}\n href={detailsPagePath}\n color={'secondary'}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: { width: '100%' },\n })}\n >\n Explore {selectedFacetValue}\n </Button>\n </Box>\n )}\n </FacetPlotsCardTitleContainer>\n\n {/* create a plot for every facet to be plotted */}\n {facetPlotDataArray.map((plotData, index) => {\n return (\n <Fragment key={index}>\n <FacetPlotsCardPlotContainer\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n pt: index === 0 ? 5 : 0,\n gridRow: `plot${index}`,\n }}\n key={index}\n >\n {index != 0 && <Divider sx={{ mt: 2, mb: 4 }} />}\n <Box sx={{ minHeight: '130px' }}>\n <Box\n ref={plotContainerRef}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Plot\n key={`${facetsToPlot![index]}-${\n plotContainerMeasurements?.width\n }`}\n layout={currentLayout}\n data={plotData?.data ?? []}\n style={getPlotStyle(\n plotContainerMeasurements?.width,\n plotType,\n maxPlotHeight,\n )}\n config={{ displayModeBar: false }}\n />\n </Box>\n <Box sx={{ mt: 4, width: '100%' }}>\n <FacetPlotLegendTable\n facetName={getColumnDisplayName(\n facetDataArray[index].columnName,\n )}\n labels={plotData?.labels}\n colors={plotData?.colors}\n isExpanded={false}\n linkToFullQuery={detailsPagePath}\n />\n </Box>\n </Box>\n </FacetPlotsCardPlotContainer>\n </Fragment>\n )\n })}\n </Paper>\n )\n}\n\nexport default function FacetPlotsCardWithSuspense(props: FacetPlotsCardProps) {\n return (\n <Suspense\n fallback={<LoadingCard numPlots={(props.facetsToPlot ?? []).length} />}\n >\n <FacetPlotsCard {...props} />\n </Suspense>\n )\n}\n"],"names":["layout","LoadingCard","props","numPlots","jsxs","Paper","FACET_PLOTS_CARD_CLASSNAME","FacetPlotsCardTitleContainer","FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME","jsx","Skeleton","SkeletonParagraph","Button","times","index","FacetPlotsCardPlotContainer","FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME","SkeletonTable","FacetPlotsCard","title","description","facetsToPlot","detailsPagePath","plotType","accessToken","useSynapseContext","queryMetadata","useSuspenseGetQueryMetadata","getColumnDisplayName","useQueryVisualizationContext","plotContainerMeasurements","plotContainerRef","useMeasure","facetDataArray","useMemo","getFacets","currentLayout","maxPlotHeight","facetPlotDataArray","useSuspenseQuery","getColumnType","facetToPlot","columnModel","item","extractPlotDataArray","selectedFacetValue","selectedFacet","facetValues","filteredFacetValues","facetValue","x","isShowingMultiplePlots","cardTitle","Typography","ShowMore","Box","theme","plotData","Fragment","Divider","Plot","getPlotStyle","FacetPlotLegendTable","FacetPlotsCardWithSuspense","Suspense"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FacetPlotsCard.js","sources":["../../../src/components/FeaturedDataTabs/FacetPlotsCard.tsx"],"sourcesContent":["import { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n Box,\n Button,\n Divider,\n Paper,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n ColumnTypeEnum,\n FacetColumnResult,\n FacetColumnResultValueCount,\n FacetColumnResultValues,\n} from '@sage-bionetworks/synapse-types'\nimport { useSuspenseQuery } from '@tanstack/react-query'\nimport { times } from 'lodash-es'\nimport Plotly from 'plotly.js-basic-dist'\nimport { Fragment, Suspense, useMemo } from 'react'\nimport Plot from '../Plot/Plot'\nimport { useQueryVisualizationContext } from '../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { ShowMore } from '../row_renderers/utils'\nimport { SkeletonParagraph, SkeletonTable } from '../Skeleton'\nimport {\n extractPlotDataArray,\n getPlotStyle,\n PlotType,\n} from '../widgets/facet-nav/FacetNavPanel'\nimport { FacetPlotLegendTable } from '../widgets/facet-nav/FacetPlotLegendTable'\nimport { getFacets } from '../widgets/facet-nav/useFacetPlots'\nimport {\n FACET_PLOTS_CARD_CLASSNAME,\n FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME,\n FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME,\n FacetPlotsCardPlotContainer,\n FacetPlotsCardTitleContainer,\n} from './FacetPlotsCardGrid'\nimport { useMeasure } from '@react-hookz/web'\n\nexport type FacetPlotsCardProps = {\n title?: string\n description?: string\n facetsToPlot?: string[]\n detailsPagePath?: string\n plotType?: PlotType\n}\n\nconst layout: Partial<Plotly.Layout> = {\n showlegend: false,\n annotations: [],\n margin: { l: 0, r: 0, b: 0, t: 0, pad: 0 },\n yaxis: {\n visible: false,\n showgrid: false,\n },\n xaxis: {\n visible: false,\n showgrid: false,\n },\n}\n\nfunction LoadingCard(props: { numPlots: number }) {\n const { numPlots } = props\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Skeleton width={'60%'} height={'24px'} />\n\n <SkeletonParagraph numRows={5} />\n\n <Skeleton width={'40%'}>\n <Button variant={'contained'}>Explore</Button>\n </Skeleton>\n </FacetPlotsCardTitleContainer>\n {times(numPlots).map(index => (\n <FacetPlotsCardPlotContainer\n key={index}\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n py: 3,\n gridRow: `plot${index}`,\n }}\n >\n <Skeleton width={'100%'} height={'300px'} />\n <SkeletonTable numRows={4} numCols={2} />\n </FacetPlotsCardPlotContainer>\n ))}\n </Paper>\n )\n}\n\nfunction FacetPlotsCard(props: FacetPlotsCardProps) {\n const {\n title,\n description,\n facetsToPlot,\n detailsPagePath,\n plotType = 'PIE',\n } = props\n const { accessToken } = useSynapseContext()\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n const { getColumnDisplayName } = useQueryVisualizationContext()\n const [plotContainerMeasurements, plotContainerRef] = useMeasure()\n\n const facetDataArray = useMemo(() => {\n if (!facetsToPlot) {\n return []\n }\n\n return getFacets(queryMetadata, facetsToPlot)\n }, [facetsToPlot, queryMetadata])\n\n const currentLayout: Partial<Plotly.Layout> = useMemo(() => {\n return {\n ...layout,\n barmode: plotType === 'STACKED_HORIZONTAL_BAR' ? 'stack' : undefined,\n }\n }, [plotType])\n const maxPlotHeight = plotType === 'STACKED_HORIZONTAL_BAR' ? 50 : 150\n const { data: facetPlotDataArray } = useSuspenseQuery({\n queryKey: ['facetPlotDataArray', facetsToPlot, facetDataArray],\n queryFn: async () => {\n if (!facetsToPlot) {\n return []\n }\n\n const getColumnType = (\n facetToPlot: FacetColumnResult,\n ): ColumnTypeEnum | undefined =>\n queryMetadata.columnModels!.find(\n columnModel => columnModel.name === facetToPlot.columnName,\n )?.columnType as ColumnTypeEnum\n\n return Promise.all(\n facetDataArray.map(async (item, index) => {\n const plotData = await extractPlotDataArray(\n item as FacetColumnResultValues,\n getColumnType(item),\n index + 1, //individual plot rgbIndex\n plotType,\n accessToken,\n )\n return plotData\n }),\n )\n },\n })\n\n const selectedFacetValue = useMemo(() => {\n if (!facetsToPlot) {\n return ''\n }\n\n // If we are showing a facet selection based card, then set the selectedFacetValue. For example, facet column \"study\" with value \"ROSMAP\"\n const selectedFacet: FacetColumnResultValueCount | undefined = queryMetadata\n ?.facets!.map(item => {\n const facetValues: FacetColumnResultValueCount[] = (\n item as FacetColumnResultValues\n ).facetValues\n if (facetValues) {\n const filteredFacetValues: FacetColumnResultValueCount[] =\n facetValues.filter(facetValue => {\n return facetValue.isSelected\n })\n return filteredFacetValues.length > 0\n ? filteredFacetValues[0]\n : undefined\n } else {\n return undefined\n }\n })\n .filter(x => x !== undefined)[0]\n\n if (selectedFacet && selectedFacet.value) {\n return selectedFacet?.value\n }\n return ''\n }, [facetsToPlot, queryMetadata?.facets])\n\n const isShowingMultiplePlots = facetPlotDataArray.length > 1\n const cardTitle =\n title ??\n (isShowingMultiplePlots\n ? selectedFacetValue\n : getColumnDisplayName(facetDataArray[0].columnName))\n return (\n <Paper className={FACET_PLOTS_CARD_CLASSNAME} sx={{ overflow: 'hidden' }}>\n <FacetPlotsCardTitleContainer\n className={FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME}\n >\n <Typography variant={'headline1'}>{cardTitle}</Typography>\n {description && (\n <Typography variant={'body1'} sx={{ color: 'grey.700', my: 2 }}>\n <ShowMore summary={description} maxCharacterCount={200} />\n </Typography>\n )}\n\n {detailsPagePath && selectedFacetValue && (\n <Box sx={{ my: 2 }}>\n <Button\n variant={'contained'}\n href={detailsPagePath}\n color={'secondary'}\n sx={theme => ({\n [theme.breakpoints.down('sm')]: { width: '100%' },\n })}\n >\n Explore {selectedFacetValue}\n </Button>\n </Box>\n )}\n </FacetPlotsCardTitleContainer>\n\n {/* create a plot for every facet to be plotted */}\n {facetPlotDataArray.map((plotData, index) => {\n return (\n <Fragment key={index}>\n <FacetPlotsCardPlotContainer\n className={FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME}\n sx={{\n pt: index === 0 ? 5 : 0,\n gridRow: `plot${index}`,\n }}\n key={index}\n >\n {index != 0 && <Divider sx={{ mt: 2, mb: 4 }} />}\n <Box sx={{ minHeight: '130px' }}>\n <Box\n ref={plotContainerRef}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Plot\n key={`${facetsToPlot![index]}-${\n plotContainerMeasurements?.width\n }`}\n layout={currentLayout}\n data={plotData?.data ?? []}\n style={getPlotStyle(\n plotContainerMeasurements?.width,\n plotType,\n maxPlotHeight,\n )}\n config={{ displayModeBar: false }}\n />\n </Box>\n <Box sx={{ mt: 4, width: '100%' }}>\n <FacetPlotLegendTable\n facetName={getColumnDisplayName(\n facetDataArray[index].columnName,\n )}\n labels={plotData?.labels}\n colors={plotData?.colors}\n isExpanded={false}\n linkToFullQuery={detailsPagePath}\n />\n </Box>\n </Box>\n </FacetPlotsCardPlotContainer>\n </Fragment>\n )\n })}\n </Paper>\n )\n}\n\nexport default function FacetPlotsCardWithSuspense(props: FacetPlotsCardProps) {\n return (\n <Suspense\n fallback={<LoadingCard numPlots={(props.facetsToPlot ?? []).length} />}\n >\n <FacetPlotsCard {...props} />\n </Suspense>\n )\n}\n"],"names":["layout","LoadingCard","props","numPlots","jsxs","Paper","FACET_PLOTS_CARD_CLASSNAME","FacetPlotsCardTitleContainer","FACET_PLOTS_CARD_TITLE_CONTAINER_CLASSNAME","jsx","Skeleton","SkeletonParagraph","Button","times","index","FacetPlotsCardPlotContainer","FACET_PLOTS_CARD_PLOT_CONTAINER_CLASSNAME","SkeletonTable","FacetPlotsCard","title","description","facetsToPlot","detailsPagePath","plotType","accessToken","useSynapseContext","queryMetadata","useSuspenseGetQueryMetadata","getColumnDisplayName","useQueryVisualizationContext","plotContainerMeasurements","plotContainerRef","useMeasure","facetDataArray","useMemo","getFacets","currentLayout","maxPlotHeight","facetPlotDataArray","useSuspenseQuery","getColumnType","facetToPlot","columnModel","item","extractPlotDataArray","selectedFacetValue","selectedFacet","facetValues","filteredFacetValues","facetValue","x","isShowingMultiplePlots","cardTitle","Typography","ShowMore","Box","theme","plotData","Fragment","Divider","Plot","getPlotStyle","FacetPlotLegendTable","FacetPlotsCardWithSuspense","Suspense"],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { jsxs as r, jsx as e, Fragment as l } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState as c } from "react";
|
|
3
3
|
import b from "./FeaturedDataPlots.js";
|
|
4
4
|
import "../../utils/functions/EntityTypeUtils.js";
|
|
5
|
-
import "../../assets/ArcusBioIcon.svg.js";
|
|
6
5
|
import "@mui/material/SvgIcon";
|
|
7
6
|
import "../../assets/icons/AccessPending.svg.js";
|
|
8
7
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
@@ -20,7 +19,7 @@ import "../../assets/icons/spatialProfiling.svg.js";
|
|
|
20
19
|
import "@mui/icons-material";
|
|
21
20
|
import _ from "../Icon/Icon.js";
|
|
22
21
|
import T from "../SynapseTable/NoContentAvailable.js";
|
|
23
|
-
function
|
|
22
|
+
function z(p) {
|
|
24
23
|
const [o, d] = c(0), { configs: i, rgbIndex: m, sql: s } = p, t = i[o];
|
|
25
24
|
return /* @__PURE__ */ r(
|
|
26
25
|
x,
|
|
@@ -81,6 +80,6 @@ function E(p) {
|
|
|
81
80
|
);
|
|
82
81
|
}
|
|
83
82
|
export {
|
|
84
|
-
|
|
83
|
+
z as default
|
|
85
84
|
};
|
|
86
85
|
//# sourceMappingURL=FeaturedDataTabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeaturedDataTabs.js","sources":["../../../src/components/FeaturedDataTabs/FeaturedDataTabs.tsx"],"sourcesContent":["import { useState } from 'react'\nimport FeaturedDataPlots, { FeaturedDataPlotsProps } from './FeaturedDataPlots'\nimport { Icon } from '../row_renderers/utils'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport { Box, Button } from '@mui/material'\nimport { Paper } from '@mui/material'\n\nexport type FeatureDataTabProps = {\n title: string // type of data being shown, used for the tab title and explore all button\n icon?: string\n exploreObjectType?: string\n explorePagePath?: string\n plotsConfig: FeaturedDataPlotsProps\n}\n\nexport type FeaturedDataTabsProps = {\n configs: FeatureDataTabProps[]\n rgbIndex: number\n sql: string\n}\n\nfunction FeaturedDataTabs(props: FeaturedDataTabsProps) {\n const [selectedTabIndex, setSelectedTabIndex] = useState<number>(0)\n const { configs, rgbIndex, sql } = props\n // explore all data button\n const selectedTabProps: FeatureDataTabProps = configs[selectedTabIndex]\n return (\n <Box\n className=\"FeaturedDataTabs\"\n sx={{ padding: { xs: '40px', lg: '80px' } }}\n >\n {/* tabs */}\n {configs.length > 1 && (\n <div className=\"FeaturedDataTabs__tabs\">\n {configs.map((config, index) => {\n const isSelectedTabIndex: boolean = index === selectedTabIndex\n return (\n <div\n className={`FeaturedDataTabs__tabs__tab ${\n isSelectedTabIndex\n ? 'FeaturedDataTabs__tabs__tab__selected'\n : ''\n }`}\n key={config.title}\n >\n <button\n className=\"SRC-centerAndJustifyContent\"\n onClick={() => setSelectedTabIndex(index)}\n >\n {config.icon && <Icon type={config.icon}></Icon>}\n <span>{config.title}</span>\n </button>\n </div>\n )\n })}\n </div>\n )}\n {/* tab content */}\n {selectedTabProps && (\n <>\n {selectedTabProps.plotsConfig.configs.length > 0 ? (\n <>\n <FeaturedDataPlots\n key={`${sql}-${selectedTabIndex}`}\n sql={sql}\n rgbIndex={rgbIndex}\n explorePagePath={selectedTabProps.explorePagePath}\n {...selectedTabProps.plotsConfig}\n />\n {selectedTabProps.explorePagePath && (\n <div className=\"FeaturedDataTabs__explore-all\">\n <Button\n variant=\"contained\"\n color=\"secondary\"\n href={selectedTabProps.explorePagePath}\n sx={theme => ({\n mb: '40px',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n })}\n >\n View All {selectedTabProps.exploreObjectType}\n </Button>\n </div>\n )}\n </>\n ) : (\n <Paper sx={{ p: 2 }}>\n <NoContentAvailable />\n </Paper>\n )}\n </>\n )}\n </Box>\n )\n}\n\nexport default FeaturedDataTabs\n"],"names":["FeaturedDataTabs","props","selectedTabIndex","setSelectedTabIndex","useState","configs","rgbIndex","sql","selectedTabProps","jsxs","Box","jsx","config","index","Icon","Fragment","FeaturedDataPlots","Button","theme","Paper","NoContentAvailable"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FeaturedDataTabs.js","sources":["../../../src/components/FeaturedDataTabs/FeaturedDataTabs.tsx"],"sourcesContent":["import { useState } from 'react'\nimport FeaturedDataPlots, { FeaturedDataPlotsProps } from './FeaturedDataPlots'\nimport { Icon } from '../row_renderers/utils'\nimport NoContentAvailable from '../SynapseTable/NoContentAvailable'\nimport { Box, Button } from '@mui/material'\nimport { Paper } from '@mui/material'\n\nexport type FeatureDataTabProps = {\n title: string // type of data being shown, used for the tab title and explore all button\n icon?: string\n exploreObjectType?: string\n explorePagePath?: string\n plotsConfig: FeaturedDataPlotsProps\n}\n\nexport type FeaturedDataTabsProps = {\n configs: FeatureDataTabProps[]\n rgbIndex: number\n sql: string\n}\n\nfunction FeaturedDataTabs(props: FeaturedDataTabsProps) {\n const [selectedTabIndex, setSelectedTabIndex] = useState<number>(0)\n const { configs, rgbIndex, sql } = props\n // explore all data button\n const selectedTabProps: FeatureDataTabProps = configs[selectedTabIndex]\n return (\n <Box\n className=\"FeaturedDataTabs\"\n sx={{ padding: { xs: '40px', lg: '80px' } }}\n >\n {/* tabs */}\n {configs.length > 1 && (\n <div className=\"FeaturedDataTabs__tabs\">\n {configs.map((config, index) => {\n const isSelectedTabIndex: boolean = index === selectedTabIndex\n return (\n <div\n className={`FeaturedDataTabs__tabs__tab ${\n isSelectedTabIndex\n ? 'FeaturedDataTabs__tabs__tab__selected'\n : ''\n }`}\n key={config.title}\n >\n <button\n className=\"SRC-centerAndJustifyContent\"\n onClick={() => setSelectedTabIndex(index)}\n >\n {config.icon && <Icon type={config.icon}></Icon>}\n <span>{config.title}</span>\n </button>\n </div>\n )\n })}\n </div>\n )}\n {/* tab content */}\n {selectedTabProps && (\n <>\n {selectedTabProps.plotsConfig.configs.length > 0 ? (\n <>\n <FeaturedDataPlots\n key={`${sql}-${selectedTabIndex}`}\n sql={sql}\n rgbIndex={rgbIndex}\n explorePagePath={selectedTabProps.explorePagePath}\n {...selectedTabProps.plotsConfig}\n />\n {selectedTabProps.explorePagePath && (\n <div className=\"FeaturedDataTabs__explore-all\">\n <Button\n variant=\"contained\"\n color=\"secondary\"\n href={selectedTabProps.explorePagePath}\n sx={theme => ({\n mb: '40px',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n })}\n >\n View All {selectedTabProps.exploreObjectType}\n </Button>\n </div>\n )}\n </>\n ) : (\n <Paper sx={{ p: 2 }}>\n <NoContentAvailable />\n </Paper>\n )}\n </>\n )}\n </Box>\n )\n}\n\nexport default FeaturedDataTabs\n"],"names":["FeaturedDataTabs","props","selectedTabIndex","setSelectedTabIndex","useState","configs","rgbIndex","sql","selectedTabProps","jsxs","Box","jsx","config","index","Icon","Fragment","FeaturedDataPlots","Button","theme","Paper","NoContentAvailable"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,SAASA,EAAiBC,GAA8B;AACtD,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAiB,CAAC,GAC5D,EAAE,SAAAC,GAAS,UAAAC,GAAU,KAAAC,EAAA,IAAQN,GAE7BO,IAAwCH,EAAQH,CAAgB;AACtE,SACE,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAI,EAAE,SAAS,EAAE,IAAI,QAAQ,IAAI,SAAO;AAAA,MAGvC,UAAA;AAAA,QAAAL,EAAQ,SAAS,KAChB,gBAAAM,EAAC,OAAA,EAAI,WAAU,0BACZ,UAAAN,EAAQ,IAAI,CAACO,GAAQC,MAGlB,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,+BAHqBE,MAAUX,IAKpC,0CACA,EACN;AAAA,YAGA,UAAA,gBAAAO;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAS,MAAMN,EAAoBU,CAAK;AAAA,gBAEvC,UAAA;AAAA,kBAAAD,EAAO,QAAQ,gBAAAD,EAACG,GAAA,EAAK,MAAMF,EAAO,MAAM;AAAA,kBACzC,gBAAAD,EAAC,QAAA,EAAM,UAAAC,EAAO,MAAA,CAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACtB;AAAA,UARKA,EAAO;AAAA,QAAA,CAWjB,EAAA,CACH;AAAA,QAGDJ,KACC,gBAAAG,EAAAI,GAAA,EACG,UAAAP,EAAiB,YAAY,QAAQ,SAAS,IAC7C,gBAAAC,EAAAM,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAJ;AAAA,YAACK;AAAA,YAAA;AAAA,cAEC,KAAAT;AAAA,cACA,UAAAD;AAAA,cACA,iBAAiBE,EAAiB;AAAA,cACjC,GAAGA,EAAiB;AAAA,YAAA;AAAA,YAJhB,GAAGD,CAAG,IAAIL,CAAgB;AAAA,UAAA;AAAA,UAMhCM,EAAiB,mBAChB,gBAAAG,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA,gBAAAF;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,MAAMT,EAAiB;AAAA,cACvB,IAAI,CAAAU,OAAU;AAAA,gBACZ,IAAI;AAAA,gBACJ,CAACA,EAAM,YAAY,KAAK,IAAI,CAAC,GAAG;AAAA,kBAC9B,OAAO;AAAA,gBAAA;AAAA,cACT;AAAA,cAEH,UAAA;AAAA,gBAAA;AAAA,gBACWV,EAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,EAC7B,CACF;AAAA,QAAA,EAAA,CAEJ,IAEA,gBAAAG,EAACQ,GAAA,EAAM,IAAI,EAAE,GAAG,EAAA,GACd,UAAA,gBAAAR,EAACS,GAAA,CAAA,CAAmB,EAAA,CACtB,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -20,7 +20,6 @@ import "../../assets/icons/standardDataModel.svg.js";
|
|
|
20
20
|
import "../../assets/icons/Challenge.svg.js";
|
|
21
21
|
import "@mui/material/SvgIcon";
|
|
22
22
|
import "../../utils/SynapseConstants.js";
|
|
23
|
-
import "../../assets/ArcusBioIcon.svg.js";
|
|
24
23
|
import "../../assets/icons/AccessPending.svg.js";
|
|
25
24
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
26
25
|
import "../../assets/icons/FileWithShield.svg.js";
|
|
@@ -37,7 +36,7 @@ import "@mui/icons-material";
|
|
|
37
36
|
import { SmartLink as _ } from "../SmartLink/SmartLink.js";
|
|
38
37
|
import { FileHandleLink as j } from "../widgets/FileHandleLink.js";
|
|
39
38
|
import { CollapsibleDescription as E } from "./CollapsibleDescription.js";
|
|
40
|
-
const M = [],
|
|
39
|
+
const M = [], Lr = B(function(R, c) {
|
|
41
40
|
const {
|
|
42
41
|
icon: f,
|
|
43
42
|
type: h,
|
|
@@ -193,7 +192,7 @@ const M = [], br = B(function(R, c) {
|
|
|
193
192
|
] });
|
|
194
193
|
});
|
|
195
194
|
export {
|
|
196
|
-
|
|
197
|
-
|
|
195
|
+
Lr as GenericCard,
|
|
196
|
+
Lr as default
|
|
198
197
|
};
|
|
199
198
|
//# sourceMappingURL=GenericCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericCard.js","sources":["../../../src/components/GenericCard/GenericCard.tsx"],"sourcesContent":["import { GenericCardTitle } from '@/components/GenericCard/GenericCardTitle'\nimport { CardLabel } from '@/components/row_renderers/utils/CardFooter'\nimport { Box, Stack } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport React, { CSSProperties, forwardRef } from 'react'\nimport { DescriptionConfig } from '../CardContainerLogic'\nimport HeaderCard, { HeaderCardVariant } from '../HeaderCard'\nimport { CardFooter } from '../row_renderers/utils'\nimport { SmartLink } from '../SmartLink/SmartLink'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard/SustainabilityScorecard'\nimport { FileHandleLink } from '../widgets/FileHandleLink'\nimport { CollapsibleDescription } from './CollapsibleDescription'\n\n/** Resolved CTA link configuration with actual href values (as opposed to CTACardLink which uses column names) */\nexport type CTALinkConfig = {\n text: React.ReactNode\n href?: string\n target?: string\n}\n\nexport type GenericCardProps = {\n /** String representing the 'type' of object. This is displayed as a label on the card. */\n type: string\n /** The title displayed on the card. */\n title: string\n /** Optionally provide href/target if the title should be a link */\n titleLinkConfiguration?: {\n href: string\n target: string\n }\n /** Optionally provide configuration if the title should be a link to a Synapse FileHandle */\n titleAsFileHandleLinkConfiguration?: {\n /** The FileHandleAssociation used to get access to the file handle */\n fileHandleAssociation: FileHandleAssociation\n /** Whether a 'download' icon should be shown */\n showDownloadIcon: boolean\n }\n /** An optional subtitle to be displayed on the card */\n subtitle?: string\n /** An description to be displayed on the card */\n description: string\n /** An optional description subtitle to be displayed on the card */\n descriptionSubTitle?: string\n /** Configuration for altering the display of the description prop */\n descriptionConfig?: DescriptionConfig\n /** Optional slot for adding content to the top of the card */\n cardTopContent?: React.ReactNode\n /** Optional slot for adding action buttons to the top of the card */\n cardTopButtons?: React.ReactNode\n /** If true, a HeaderCard component will be rendered */\n isHeader?: boolean\n /** The variant of HeaderCard to render if `isHeader` is true */\n headerCardVariant?: HeaderCardVariant\n /** Set to true if the icon is an arbitrary image. The card styles will be updated to accommodate the image\n * @default false */\n useStylesForDisplayedImage?: boolean\n /**\n * The rendered icon on the card\n */\n icon: React.ReactNode\n /**\n * The card labels to be displayed in the footer of the card\n */\n labels?: CardLabel[]\n /**\n * The initial number of labels to display in the footer of the card\n */\n secondaryLabelLimit?: number\n /**\n * Optional configuration for displaying CTA button(s) on the card. Accepts a single config or an array.\n */\n ctaLinkConfig?: CTALinkConfig | CTALinkConfig[]\n /**\n * The rendered icon list on the card\n */\n renderedIconList?: React.ReactNode\n /**\n * Optional sustainability scorecard to be displayed on the header card\n */\n sustainabilityScorecard?: SustainabilityScorecardProps\n /**\n * Optional ReactNode to be rendered next to the card type\n */\n cardTypeAdornment?: React.ReactNode\n /**\n * Optional content to render to the right of the title/subtitle/description area.\n */\n titleAreaRightContent?: React.ReactNode\n /**\n * Character count threshold for truncating description\n * @default 400\n */\n charCountCutoff?: number\n}\n\nconst EMPTY_CARD_LABEL_ARRAY: CardLabel[] = []\n\n/**\n * Generic portal card UI component with a predefined layout\n */\nexport const GenericCard = forwardRef(function GenericCard(\n props: GenericCardProps,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n icon,\n type,\n title,\n titleLinkConfiguration,\n titleAsFileHandleLinkConfiguration,\n subtitle,\n description,\n descriptionSubTitle = '',\n descriptionConfig,\n cardTopContent,\n cardTopButtons,\n isHeader = false,\n headerCardVariant,\n useStylesForDisplayedImage = false,\n labels = EMPTY_CARD_LABEL_ARRAY,\n secondaryLabelLimit,\n ctaLinkConfig,\n renderedIconList,\n sustainabilityScorecard,\n cardTypeAdornment,\n titleAreaRightContent,\n charCountCutoff,\n } = props\n\n const showFooter = labels.length > 0\n\n const style: CSSProperties = {\n // undefined, take default value from class\n marginTop: isHeader ? '0px' : undefined,\n marginBottom: isHeader ? '0px' : undefined,\n paddingBottom:\n showFooter || useStylesForDisplayedImage ? undefined : '15px',\n }\n\n if (isHeader) {\n return (\n <HeaderCard\n ref={ref}\n headerCardVariant={headerCardVariant}\n descriptionConfig={descriptionConfig}\n charCountCutoff={charCountCutoff}\n title={title}\n subTitle={subtitle}\n description={description}\n type={type}\n icon={icon}\n values={labels}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n ctaLinkConfig={ctaLinkConfig}\n isAlignToLeftNav={true}\n secondaryLabelLimit={secondaryLabelLimit}\n cardTopButtons={cardTopButtons}\n cardTopContent={cardTopContent}\n sustainabilityScorecard={sustainabilityScorecard}\n />\n )\n }\n\n return (\n <div style={style} ref={ref} className={'SRC-portalCard'}>\n <div className={'SRC-portalCardMain'}>\n {icon}\n <div className=\"SRC-cardContent\">\n {cardTopButtons && (\n <Box\n sx={{\n position: 'absolute',\n right: '24px',\n display: 'flex',\n float: 'right',\n flexDirection: 'row',\n gap: '10px',\n }}\n >\n {cardTopButtons}\n </Box>\n )}\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: '10px',\n }}\n >\n <div className=\"SRC-type\">{type}</div>\n {cardTypeAdornment}\n </Stack>\n {renderedIconList}\n <Box className=\"SRC-cardTitleArea\">\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <div>\n <h3\n className=\"SRC-boldText SRC-blackText\"\n style={{ margin: 'none' }}\n >\n {!titleAsFileHandleLinkConfiguration && (\n <GenericCardTitle\n title={title}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n />\n )}\n {titleAsFileHandleLinkConfiguration && (\n <FileHandleLink\n fileHandleAssociation={\n titleAsFileHandleLinkConfiguration.fileHandleAssociation\n }\n showDownloadIcon={\n titleAsFileHandleLinkConfiguration.showDownloadIcon\n }\n displayValue={title}\n />\n )}\n </h3>\n </div>\n {subtitle && <div className=\"SRC-author\">{subtitle}</div>}\n <CollapsibleDescription\n description={description}\n descriptionSubTitle={descriptionSubTitle}\n descriptionConfig={descriptionConfig}\n />\n {ctaLinkConfig && (\n <Box\n sx={{ mt: '20px', display: 'flex', gap: 2, flexWrap: 'wrap' }}\n >\n {(Array.isArray(ctaLinkConfig)\n ? ctaLinkConfig\n : [ctaLinkConfig]\n ).map(\n (config, index) =>\n config.text &&\n config.href && (\n <SmartLink\n key={index}\n href={config.href}\n target={config.target}\n >\n {config.text}\n </SmartLink>\n ),\n )}\n </Box>\n )}\n </Box>\n {titleAreaRightContent && (\n <div className=\"SRC-cardTitleAreaDetails\">\n {titleAreaRightContent}\n </div>\n )}\n </Box>\n </div>\n </div>\n {showFooter && (\n <CardFooter\n isHeader={false}\n secondaryLabelLimit={secondaryLabelLimit}\n values={labels}\n className={useStylesForDisplayedImage ? undefined : 'hasIcon'}\n cardTopContent={cardTopContent}\n />\n )}\n </div>\n )\n})\n\nexport default GenericCard\n"],"names":["EMPTY_CARD_LABEL_ARRAY","GenericCard","forwardRef","props","ref","icon","type","title","titleLinkConfiguration","titleAsFileHandleLinkConfiguration","subtitle","description","descriptionSubTitle","descriptionConfig","cardTopContent","cardTopButtons","isHeader","headerCardVariant","useStylesForDisplayedImage","labels","secondaryLabelLimit","ctaLinkConfig","renderedIconList","sustainabilityScorecard","cardTypeAdornment","titleAreaRightContent","charCountCutoff","showFooter","style","jsx","HeaderCard","jsxs","Box","Stack","GenericCardTitle","FileHandleLink","CollapsibleDescription","config","index","SmartLink","CardFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GenericCard.js","sources":["../../../src/components/GenericCard/GenericCard.tsx"],"sourcesContent":["import { GenericCardTitle } from '@/components/GenericCard/GenericCardTitle'\nimport { CardLabel } from '@/components/row_renderers/utils/CardFooter'\nimport { Box, Stack } from '@mui/material'\nimport { FileHandleAssociation } from '@sage-bionetworks/synapse-types'\nimport React, { CSSProperties, forwardRef } from 'react'\nimport { DescriptionConfig } from '../CardContainerLogic'\nimport HeaderCard, { HeaderCardVariant } from '../HeaderCard'\nimport { CardFooter } from '../row_renderers/utils'\nimport { SmartLink } from '../SmartLink/SmartLink'\nimport { SustainabilityScorecardProps } from '../SustainabilityScorecard/SustainabilityScorecard'\nimport { FileHandleLink } from '../widgets/FileHandleLink'\nimport { CollapsibleDescription } from './CollapsibleDescription'\n\n/** Resolved CTA link configuration with actual href values (as opposed to CTACardLink which uses column names) */\nexport type CTALinkConfig = {\n text: React.ReactNode\n href?: string\n target?: string\n}\n\nexport type GenericCardProps = {\n /** String representing the 'type' of object. This is displayed as a label on the card. */\n type: string\n /** The title displayed on the card. */\n title: string\n /** Optionally provide href/target if the title should be a link */\n titleLinkConfiguration?: {\n href: string\n target: string\n }\n /** Optionally provide configuration if the title should be a link to a Synapse FileHandle */\n titleAsFileHandleLinkConfiguration?: {\n /** The FileHandleAssociation used to get access to the file handle */\n fileHandleAssociation: FileHandleAssociation\n /** Whether a 'download' icon should be shown */\n showDownloadIcon: boolean\n }\n /** An optional subtitle to be displayed on the card */\n subtitle?: string\n /** An description to be displayed on the card */\n description: string\n /** An optional description subtitle to be displayed on the card */\n descriptionSubTitle?: string\n /** Configuration for altering the display of the description prop */\n descriptionConfig?: DescriptionConfig\n /** Optional slot for adding content to the top of the card */\n cardTopContent?: React.ReactNode\n /** Optional slot for adding action buttons to the top of the card */\n cardTopButtons?: React.ReactNode\n /** If true, a HeaderCard component will be rendered */\n isHeader?: boolean\n /** The variant of HeaderCard to render if `isHeader` is true */\n headerCardVariant?: HeaderCardVariant\n /** Set to true if the icon is an arbitrary image. The card styles will be updated to accommodate the image\n * @default false */\n useStylesForDisplayedImage?: boolean\n /**\n * The rendered icon on the card\n */\n icon: React.ReactNode\n /**\n * The card labels to be displayed in the footer of the card\n */\n labels?: CardLabel[]\n /**\n * The initial number of labels to display in the footer of the card\n */\n secondaryLabelLimit?: number\n /**\n * Optional configuration for displaying CTA button(s) on the card. Accepts a single config or an array.\n */\n ctaLinkConfig?: CTALinkConfig | CTALinkConfig[]\n /**\n * The rendered icon list on the card\n */\n renderedIconList?: React.ReactNode\n /**\n * Optional sustainability scorecard to be displayed on the header card\n */\n sustainabilityScorecard?: SustainabilityScorecardProps\n /**\n * Optional ReactNode to be rendered next to the card type\n */\n cardTypeAdornment?: React.ReactNode\n /**\n * Optional content to render to the right of the title/subtitle/description area.\n */\n titleAreaRightContent?: React.ReactNode\n /**\n * Character count threshold for truncating description\n * @default 400\n */\n charCountCutoff?: number\n}\n\nconst EMPTY_CARD_LABEL_ARRAY: CardLabel[] = []\n\n/**\n * Generic portal card UI component with a predefined layout\n */\nexport const GenericCard = forwardRef(function GenericCard(\n props: GenericCardProps,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n icon,\n type,\n title,\n titleLinkConfiguration,\n titleAsFileHandleLinkConfiguration,\n subtitle,\n description,\n descriptionSubTitle = '',\n descriptionConfig,\n cardTopContent,\n cardTopButtons,\n isHeader = false,\n headerCardVariant,\n useStylesForDisplayedImage = false,\n labels = EMPTY_CARD_LABEL_ARRAY,\n secondaryLabelLimit,\n ctaLinkConfig,\n renderedIconList,\n sustainabilityScorecard,\n cardTypeAdornment,\n titleAreaRightContent,\n charCountCutoff,\n } = props\n\n const showFooter = labels.length > 0\n\n const style: CSSProperties = {\n // undefined, take default value from class\n marginTop: isHeader ? '0px' : undefined,\n marginBottom: isHeader ? '0px' : undefined,\n paddingBottom:\n showFooter || useStylesForDisplayedImage ? undefined : '15px',\n }\n\n if (isHeader) {\n return (\n <HeaderCard\n ref={ref}\n headerCardVariant={headerCardVariant}\n descriptionConfig={descriptionConfig}\n charCountCutoff={charCountCutoff}\n title={title}\n subTitle={subtitle}\n description={description}\n type={type}\n icon={icon}\n values={labels}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n ctaLinkConfig={ctaLinkConfig}\n isAlignToLeftNav={true}\n secondaryLabelLimit={secondaryLabelLimit}\n cardTopButtons={cardTopButtons}\n cardTopContent={cardTopContent}\n sustainabilityScorecard={sustainabilityScorecard}\n />\n )\n }\n\n return (\n <div style={style} ref={ref} className={'SRC-portalCard'}>\n <div className={'SRC-portalCardMain'}>\n {icon}\n <div className=\"SRC-cardContent\">\n {cardTopButtons && (\n <Box\n sx={{\n position: 'absolute',\n right: '24px',\n display: 'flex',\n float: 'right',\n flexDirection: 'row',\n gap: '10px',\n }}\n >\n {cardTopButtons}\n </Box>\n )}\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: '10px',\n }}\n >\n <div className=\"SRC-type\">{type}</div>\n {cardTypeAdornment}\n </Stack>\n {renderedIconList}\n <Box className=\"SRC-cardTitleArea\">\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <div>\n <h3\n className=\"SRC-boldText SRC-blackText\"\n style={{ margin: 'none' }}\n >\n {!titleAsFileHandleLinkConfiguration && (\n <GenericCardTitle\n title={title}\n href={titleLinkConfiguration?.href}\n target={titleLinkConfiguration?.target}\n />\n )}\n {titleAsFileHandleLinkConfiguration && (\n <FileHandleLink\n fileHandleAssociation={\n titleAsFileHandleLinkConfiguration.fileHandleAssociation\n }\n showDownloadIcon={\n titleAsFileHandleLinkConfiguration.showDownloadIcon\n }\n displayValue={title}\n />\n )}\n </h3>\n </div>\n {subtitle && <div className=\"SRC-author\">{subtitle}</div>}\n <CollapsibleDescription\n description={description}\n descriptionSubTitle={descriptionSubTitle}\n descriptionConfig={descriptionConfig}\n />\n {ctaLinkConfig && (\n <Box\n sx={{ mt: '20px', display: 'flex', gap: 2, flexWrap: 'wrap' }}\n >\n {(Array.isArray(ctaLinkConfig)\n ? ctaLinkConfig\n : [ctaLinkConfig]\n ).map(\n (config, index) =>\n config.text &&\n config.href && (\n <SmartLink\n key={index}\n href={config.href}\n target={config.target}\n >\n {config.text}\n </SmartLink>\n ),\n )}\n </Box>\n )}\n </Box>\n {titleAreaRightContent && (\n <div className=\"SRC-cardTitleAreaDetails\">\n {titleAreaRightContent}\n </div>\n )}\n </Box>\n </div>\n </div>\n {showFooter && (\n <CardFooter\n isHeader={false}\n secondaryLabelLimit={secondaryLabelLimit}\n values={labels}\n className={useStylesForDisplayedImage ? undefined : 'hasIcon'}\n cardTopContent={cardTopContent}\n />\n )}\n </div>\n )\n})\n\nexport default GenericCard\n"],"names":["EMPTY_CARD_LABEL_ARRAY","GenericCard","forwardRef","props","ref","icon","type","title","titleLinkConfiguration","titleAsFileHandleLinkConfiguration","subtitle","description","descriptionSubTitle","descriptionConfig","cardTopContent","cardTopButtons","isHeader","headerCardVariant","useStylesForDisplayedImage","labels","secondaryLabelLimit","ctaLinkConfig","renderedIconList","sustainabilityScorecard","cardTypeAdornment","titleAreaRightContent","charCountCutoff","showFooter","style","jsx","HeaderCard","jsxs","Box","Stack","GenericCardTitle","FileHandleLink","CollapsibleDescription","config","index","SmartLink","CardFooter"],"mappings":"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"}
|
|
@@ -19,7 +19,6 @@ import "../assets/icons/standardDataModel.svg.js";
|
|
|
19
19
|
import "../assets/icons/Challenge.svg.js";
|
|
20
20
|
import "@mui/material/SvgIcon";
|
|
21
21
|
import "../utils/SynapseConstants.js";
|
|
22
|
-
import "../assets/ArcusBioIcon.svg.js";
|
|
23
22
|
import "../assets/icons/AccessPending.svg.js";
|
|
24
23
|
import "../assets/icons/AccessPendingCloud.svg.js";
|
|
25
24
|
import "../assets/icons/FileWithShield.svg.js";
|
|
@@ -163,11 +162,11 @@ const B = C(function(e, o) {
|
|
|
163
162
|
] })
|
|
164
163
|
}
|
|
165
164
|
);
|
|
166
|
-
}),
|
|
165
|
+
}), gr = C(function(e, o) {
|
|
167
166
|
const { headerCardVariant: a = "HeaderCard" } = e;
|
|
168
167
|
return a === "HeaderCardV2" ? /* @__PURE__ */ r(L, { ...e, ref: o }) : /* @__PURE__ */ r(B, { ...e, ref: o });
|
|
169
168
|
});
|
|
170
169
|
export {
|
|
171
|
-
|
|
170
|
+
gr as default
|
|
172
171
|
};
|
|
173
172
|
//# sourceMappingURL=HeaderCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderCard.js","sources":["../../src/components/HeaderCard.tsx"],"sourcesContent":["import { CardLabel } from '@/components/row_renderers/utils/CardFooter'\nimport { Box, SxProps } from '@mui/material'\nimport { SmartLink } from './SmartLink/SmartLink'\nimport { ForwardedRef, forwardRef } from 'react'\nimport { CardFooter } from './row_renderers/utils'\nimport { DescriptionConfig } from './CardContainerLogic'\nimport { CollapsibleDescription } from './GenericCard/CollapsibleDescription'\nimport { GenericCardProps } from '@/components/GenericCard/GenericCard'\nimport HeaderCardV2 from './HeaderCard/HeaderCardV2'\nimport SustainabilityScorecard, {\n SustainabilityScorecardProps,\n} from './SustainabilityScorecard/SustainabilityScorecard'\nimport { useDocumentMetadata } from '@/utils/context/DocumentMetadataContext'\n\nexport type HeaderCardVariant = 'HeaderCard' | 'HeaderCardV2'\n\nexport type HeaderCardProps = {\n type: string\n title: string\n subTitle?: string\n description: string\n secondaryLabelLimit?: number\n values?: CardLabel[]\n isAlignToLeftNav?: boolean\n descriptionConfig?: DescriptionConfig\n charCountCutoff?: number\n href?: string\n target?: string\n icon: React.ReactNode\n headerCardVariant?: HeaderCardVariant\n cardTopContent?: React.ReactNode\n ctaLinkConfig?: GenericCardProps['ctaLinkConfig']\n cardTopButtons?: React.ReactNode\n sustainabilityScorecard?: SustainabilityScorecardProps\n doiUri?: string\n sx?: SxProps\n}\n\nconst HeaderCardClassic = forwardRef(function HeaderCardClassic(\n props: HeaderCardProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n type,\n title,\n subTitle = '',\n description,\n values,\n secondaryLabelLimit,\n isAlignToLeftNav,\n descriptionConfig,\n href,\n target,\n icon,\n cardTopContent,\n cardTopButtons,\n sustainabilityScorecard,\n sx,\n } = props\n\n const hideIcon = Boolean(sustainabilityScorecard)\n const descriptionConfiguration: DescriptionConfig = {\n ...descriptionConfig,\n showFullDescriptionByDefault:\n descriptionConfig?.showFullDescriptionByDefault ?? true,\n }\n\n const metadataDescription = description || subTitle || undefined\n useDocumentMetadata({\n title,\n description: metadataDescription,\n priority: 100,\n })\n\n return (\n <Box\n ref={ref}\n className={`SRC-portalCard SRC-portalCardHeader ${\n isAlignToLeftNav ? 'isAlignToLeftNav' : ''\n }`}\n sx={sx}\n >\n <div className=\"container-fluid container-full-width\">\n <Box\n sx={{\n display: 'flex',\n gap: '10px',\n float: 'right',\n }}\n >\n {cardTopButtons}\n </Box>\n <div className=\"row\">\n <div className=\"col-md-offset-1 col-md-10\">\n <div className=\"SRC-portalCardMain\">\n {!hideIcon && icon}\n <Box\n sx={{\n width: '100%',\n ...(hideIcon && {\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n }),\n }}\n >\n <div className=\"SRC-cardContent\" style={{ marginLeft: '15px' }}>\n <div className=\"SRC-type\">{type}</div>\n <div>\n <h3 className=\"SRC-boldText\" style={{ margin: 'none' }}>\n {href ? (\n <SmartLink\n href={href ?? ''}\n className=\"highlight-link\"\n target={target}\n >\n {title}\n </SmartLink>\n ) : (\n <span>{title}</span>\n )}\n </h3>\n </div>\n {subTitle && <div className=\"SRC-author\"> {subTitle} </div>}\n <CollapsibleDescription\n description={description}\n descriptionSubTitle=\"\"\n descriptionConfig={descriptionConfiguration}\n />\n {sustainabilityScorecard && (\n <SustainabilityScorecard\n metricsConfig={sustainabilityScorecard.metricsConfig}\n searchParamKey={sustainabilityScorecard.searchParamKey}\n filterColumn={sustainabilityScorecard.filterColumn}\n scoreDescriptorColumnName={\n sustainabilityScorecard.scoreDescriptorColumnName\n }\n queryRequest={sustainabilityScorecard.queryRequest}\n sustainabilityReportLink={\n sustainabilityScorecard.sustainabilityReportLink\n }\n sx={{\n background: 'rgba(0, 0, 0, 0.10)',\n marginTop: '30px',\n }}\n />\n )}\n </div>\n {(values || cardTopContent) && (\n <>\n <div\n style={{\n borderTop: '1px solid rgba(26, 28, 41, 0.2)',\n marginTop: '15px',\n paddingTop: '5px',\n }}\n />\n <div className=\"SRC-cardContent\">\n {cardTopContent}\n {values && (\n <CardFooter\n isHeader={true}\n secondaryLabelLimit={secondaryLabelLimit}\n values={values}\n />\n )}\n </div>\n </>\n )}\n </Box>\n </div>\n </div>\n </div>\n </div>\n </Box>\n )\n})\n\nconst HeaderCard = forwardRef(function HeaderCard(\n props: HeaderCardProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { headerCardVariant = 'HeaderCard' } = props\n if (headerCardVariant === 'HeaderCardV2') {\n return <HeaderCardV2 {...props} ref={ref} />\n }\n return <HeaderCardClassic {...props} ref={ref} />\n})\n\nexport default HeaderCard\n"],"names":["HeaderCardClassic","forwardRef","props","ref","type","title","subTitle","description","values","secondaryLabelLimit","isAlignToLeftNav","descriptionConfig","href","target","icon","cardTopContent","cardTopButtons","sustainabilityScorecard","sx","hideIcon","descriptionConfiguration","useDocumentMetadata","jsx","Box","jsxs","SmartLink","CollapsibleDescription","SustainabilityScorecard","Fragment","CardFooter","HeaderCard","headerCardVariant","HeaderCardV2"],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeaderCard.js","sources":["../../src/components/HeaderCard.tsx"],"sourcesContent":["import { CardLabel } from '@/components/row_renderers/utils/CardFooter'\nimport { Box, SxProps } from '@mui/material'\nimport { SmartLink } from './SmartLink/SmartLink'\nimport { ForwardedRef, forwardRef } from 'react'\nimport { CardFooter } from './row_renderers/utils'\nimport { DescriptionConfig } from './CardContainerLogic'\nimport { CollapsibleDescription } from './GenericCard/CollapsibleDescription'\nimport { GenericCardProps } from '@/components/GenericCard/GenericCard'\nimport HeaderCardV2 from './HeaderCard/HeaderCardV2'\nimport SustainabilityScorecard, {\n SustainabilityScorecardProps,\n} from './SustainabilityScorecard/SustainabilityScorecard'\nimport { useDocumentMetadata } from '@/utils/context/DocumentMetadataContext'\n\nexport type HeaderCardVariant = 'HeaderCard' | 'HeaderCardV2'\n\nexport type HeaderCardProps = {\n type: string\n title: string\n subTitle?: string\n description: string\n secondaryLabelLimit?: number\n values?: CardLabel[]\n isAlignToLeftNav?: boolean\n descriptionConfig?: DescriptionConfig\n charCountCutoff?: number\n href?: string\n target?: string\n icon: React.ReactNode\n headerCardVariant?: HeaderCardVariant\n cardTopContent?: React.ReactNode\n ctaLinkConfig?: GenericCardProps['ctaLinkConfig']\n cardTopButtons?: React.ReactNode\n sustainabilityScorecard?: SustainabilityScorecardProps\n doiUri?: string\n sx?: SxProps\n}\n\nconst HeaderCardClassic = forwardRef(function HeaderCardClassic(\n props: HeaderCardProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n type,\n title,\n subTitle = '',\n description,\n values,\n secondaryLabelLimit,\n isAlignToLeftNav,\n descriptionConfig,\n href,\n target,\n icon,\n cardTopContent,\n cardTopButtons,\n sustainabilityScorecard,\n sx,\n } = props\n\n const hideIcon = Boolean(sustainabilityScorecard)\n const descriptionConfiguration: DescriptionConfig = {\n ...descriptionConfig,\n showFullDescriptionByDefault:\n descriptionConfig?.showFullDescriptionByDefault ?? true,\n }\n\n const metadataDescription = description || subTitle || undefined\n useDocumentMetadata({\n title,\n description: metadataDescription,\n priority: 100,\n })\n\n return (\n <Box\n ref={ref}\n className={`SRC-portalCard SRC-portalCardHeader ${\n isAlignToLeftNav ? 'isAlignToLeftNav' : ''\n }`}\n sx={sx}\n >\n <div className=\"container-fluid container-full-width\">\n <Box\n sx={{\n display: 'flex',\n gap: '10px',\n float: 'right',\n }}\n >\n {cardTopButtons}\n </Box>\n <div className=\"row\">\n <div className=\"col-md-offset-1 col-md-10\">\n <div className=\"SRC-portalCardMain\">\n {!hideIcon && icon}\n <Box\n sx={{\n width: '100%',\n ...(hideIcon && {\n display: 'flex',\n flexDirection: { xs: 'column', sm: 'row' },\n }),\n }}\n >\n <div className=\"SRC-cardContent\" style={{ marginLeft: '15px' }}>\n <div className=\"SRC-type\">{type}</div>\n <div>\n <h3 className=\"SRC-boldText\" style={{ margin: 'none' }}>\n {href ? (\n <SmartLink\n href={href ?? ''}\n className=\"highlight-link\"\n target={target}\n >\n {title}\n </SmartLink>\n ) : (\n <span>{title}</span>\n )}\n </h3>\n </div>\n {subTitle && <div className=\"SRC-author\"> {subTitle} </div>}\n <CollapsibleDescription\n description={description}\n descriptionSubTitle=\"\"\n descriptionConfig={descriptionConfiguration}\n />\n {sustainabilityScorecard && (\n <SustainabilityScorecard\n metricsConfig={sustainabilityScorecard.metricsConfig}\n searchParamKey={sustainabilityScorecard.searchParamKey}\n filterColumn={sustainabilityScorecard.filterColumn}\n scoreDescriptorColumnName={\n sustainabilityScorecard.scoreDescriptorColumnName\n }\n queryRequest={sustainabilityScorecard.queryRequest}\n sustainabilityReportLink={\n sustainabilityScorecard.sustainabilityReportLink\n }\n sx={{\n background: 'rgba(0, 0, 0, 0.10)',\n marginTop: '30px',\n }}\n />\n )}\n </div>\n {(values || cardTopContent) && (\n <>\n <div\n style={{\n borderTop: '1px solid rgba(26, 28, 41, 0.2)',\n marginTop: '15px',\n paddingTop: '5px',\n }}\n />\n <div className=\"SRC-cardContent\">\n {cardTopContent}\n {values && (\n <CardFooter\n isHeader={true}\n secondaryLabelLimit={secondaryLabelLimit}\n values={values}\n />\n )}\n </div>\n </>\n )}\n </Box>\n </div>\n </div>\n </div>\n </div>\n </Box>\n )\n})\n\nconst HeaderCard = forwardRef(function HeaderCard(\n props: HeaderCardProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { headerCardVariant = 'HeaderCard' } = props\n if (headerCardVariant === 'HeaderCardV2') {\n return <HeaderCardV2 {...props} ref={ref} />\n }\n return <HeaderCardClassic {...props} ref={ref} />\n})\n\nexport default HeaderCard\n"],"names":["HeaderCardClassic","forwardRef","props","ref","type","title","subTitle","description","values","secondaryLabelLimit","isAlignToLeftNav","descriptionConfig","href","target","icon","cardTopContent","cardTopButtons","sustainabilityScorecard","sx","hideIcon","descriptionConfiguration","useDocumentMetadata","jsx","Box","jsxs","SmartLink","CollapsibleDescription","SustainabilityScorecard","Fragment","CardFooter","HeaderCard","headerCardVariant","HeaderCardV2"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SvgIconProps } from '@mui/material/SvgIcon';
|
|
2
2
|
import { EntityType } from '@sage-bionetworks/synapse-client';
|
|
3
|
-
export declare const IconStrings: readonly ["accessOpen", "accessPending", "accessPendingCloud", "accessClosed", "actionKey", "arrowBack", "arrowForward", "arrowDropUp", "arrowDropDown", "article", "cards", "check", "clear", "cart", "clock", "code", "columns", "openInNewWindow", "dashboard", "delete", "deleteSweep", "filter", "addToCart", "addCircleOutline", "addCircleTwoTone", "reload", "team", "photoCamera", "info", "favTwoTone", "favOutline", "fav", "peopleTwoTone", "challengesTwoTone", "download", "searchOutlined", "search", "history", "time", "login", "helpChatBubble", "helpOutlined", "helpOutlineTwoTone", "expandLess", "expandMore", "rat", "chromatin", "clinical", "contentCopy", "data", "dataLocked", "geneExpression", "geneVariants", "github", "imaging", "inSilicoModel", "modelSystem", "bioChemicalPhysical", "computationalTool", "spatialProfiling", "dataReuse", "lineGraph", "kinomics", "proteomics", "packagableFile", "unpackagableFile", "other", "wiki", "file", "fileOutlined", "folder", "link", "linkOff", "table", "tableRows", "share", "public", "people", "entityview", "submissionview", "challenge", "discussion", "dataset", "datasetcollection", "docker", "accountCertified", "accountRegistered", "accountValidated", "warningOutlined", "removeCircle", "replyTwoTone", "chatTwoTone", "accessManagement", "chevronRight", "chevronLeft", "database", "close", "cross", "verticalEllipsis", "sync", "clipboard", "clipboardCheck", "add", "warning", "circle", "block", "checkCircle", "errorOutlined", "phone", "pushpin", "addBoxOutline", "minusBoxOutline", "italic", "bold", "title", "visibility", "visibilityOff", "strikethrough", "subscript", "superscript", "latex", "image", "edit", "tag", "restore", "label", "upload", "flag", "newFolder", "createVersion", "email", "addConditions", "sortUp", "sortDown", "orcid", "tasks", "google24", "
|
|
3
|
+
export declare const IconStrings: readonly ["accessOpen", "accessPending", "accessPendingCloud", "accessClosed", "actionKey", "arrowBack", "arrowForward", "arrowDropUp", "arrowDropDown", "article", "cards", "check", "clear", "cart", "clock", "code", "columns", "openInNewWindow", "dashboard", "delete", "deleteSweep", "filter", "addToCart", "addCircleOutline", "addCircleTwoTone", "reload", "team", "photoCamera", "info", "favTwoTone", "favOutline", "fav", "peopleTwoTone", "challengesTwoTone", "download", "searchOutlined", "search", "history", "time", "login", "helpChatBubble", "helpOutlined", "helpOutlineTwoTone", "expandLess", "expandMore", "rat", "chromatin", "clinical", "contentCopy", "data", "dataLocked", "geneExpression", "geneVariants", "github", "imaging", "inSilicoModel", "modelSystem", "bioChemicalPhysical", "computationalTool", "spatialProfiling", "dataReuse", "lineGraph", "kinomics", "proteomics", "packagableFile", "unpackagableFile", "other", "wiki", "file", "fileOutlined", "folder", "link", "linkOff", "table", "tableRows", "share", "public", "people", "entityview", "submissionview", "challenge", "discussion", "dataset", "datasetcollection", "docker", "accountCertified", "accountRegistered", "accountValidated", "warningOutlined", "removeCircle", "replyTwoTone", "chatTwoTone", "accessManagement", "chevronRight", "chevronLeft", "database", "close", "cross", "verticalEllipsis", "sync", "clipboard", "clipboardCheck", "add", "warning", "circle", "block", "checkCircle", "errorOutlined", "phone", "pushpin", "addBoxOutline", "minusBoxOutline", "italic", "bold", "title", "visibility", "visibilityOff", "strikethrough", "subscript", "superscript", "latex", "image", "edit", "tag", "restore", "label", "upload", "flag", "newFolder", "createVersion", "email", "addConditions", "sortUp", "sortDown", "orcid", "tasks", "google24", "openInFull", "tableview", "fileWithShield", "baseline", "rosetteRibbon", "starTrophy", "awardScroll", "clappingHands", "podium", "openBook", "handWithMoney", "threeStars", "multiFile", "publicVisibility", "openVisibility", "privateVisibility"];
|
|
4
4
|
export type IconName = (typeof IconStrings)[number];
|
|
5
5
|
export type IconSvgProps = {
|
|
6
6
|
icon: IconName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconSvg.d.ts","sourceRoot":"","sources":["../../../src/components/IconSvg/IconSvg.tsx"],"names":[],"mappings":"AAoJA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAG7D,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"IconSvg.d.ts","sourceRoot":"","sources":["../../../src/components/IconSvg/IconSvg.tsx"],"names":[],"mappings":"AAoJA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAG7D,eAAO,MAAM,WAAW,ihEA0Jd,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAA;IAEd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,GAAG,YAAY,CAAA;AAyUhB,iBAAS,OAAO,CAAC,KAAK,EAAE,YAAY,2CA2CnC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAczD,CAAA;AAED,eAAe,OAAO,CAAA"}
|