synapse-react-client 4.0.2 → 4.0.3
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/assets/icons/AwardScroll.d.ts +5 -0
- package/dist/assets/icons/AwardScroll.d.ts.map +1 -0
- package/dist/assets/icons/AwardScroll.js +78 -0
- package/dist/assets/icons/AwardScroll.js.map +1 -0
- package/dist/assets/icons/Baseline.d.ts +5 -0
- package/dist/assets/icons/Baseline.d.ts.map +1 -0
- package/dist/assets/icons/Baseline.js +43 -0
- package/dist/assets/icons/Baseline.js.map +1 -0
- package/dist/assets/icons/Challenge.svg +13 -0
- package/dist/assets/icons/Challenge.svg.js +7 -0
- package/dist/assets/icons/Challenge.svg.js.map +1 -0
- package/dist/assets/icons/ClappingHands.d.ts +5 -0
- package/dist/assets/icons/ClappingHands.d.ts.map +1 -0
- package/dist/assets/icons/ClappingHands.js +106 -0
- package/dist/assets/icons/ClappingHands.js.map +1 -0
- package/dist/assets/icons/HandWithMoney.d.ts +5 -0
- package/dist/assets/icons/HandWithMoney.d.ts.map +1 -0
- package/dist/assets/icons/HandWithMoney.js +15 -0
- package/dist/assets/icons/HandWithMoney.js.map +1 -0
- package/dist/assets/icons/MultiFile.d.ts +5 -0
- package/dist/assets/icons/MultiFile.d.ts.map +1 -0
- package/dist/assets/icons/MultiFile.js +8 -0
- package/dist/assets/icons/MultiFile.js.map +1 -0
- package/dist/assets/icons/MultiFile.svg +4 -0
- package/dist/assets/icons/MultiFile.svg.js +7 -0
- package/dist/assets/icons/MultiFile.svg.js.map +1 -0
- package/dist/assets/icons/OpenBook.d.ts +5 -0
- package/dist/assets/icons/OpenBook.d.ts.map +1 -0
- package/dist/assets/icons/OpenBook.js +99 -0
- package/dist/assets/icons/OpenBook.js.map +1 -0
- package/dist/assets/icons/Podium.d.ts +5 -0
- package/dist/assets/icons/Podium.d.ts.map +1 -0
- package/dist/assets/icons/Podium.js +36 -0
- package/dist/assets/icons/Podium.js.map +1 -0
- package/dist/assets/icons/RosetteRibbon.d.ts +5 -0
- package/dist/assets/icons/RosetteRibbon.d.ts.map +1 -0
- package/dist/assets/icons/RosetteRibbon.js +36 -0
- package/dist/assets/icons/RosetteRibbon.js.map +1 -0
- package/dist/assets/icons/StarTrophy.d.ts +5 -0
- package/dist/assets/icons/StarTrophy.d.ts.map +1 -0
- package/dist/assets/icons/StarTrophy.js +99 -0
- package/dist/assets/icons/StarTrophy.js.map +1 -0
- package/dist/assets/icons/ThreeStars.d.ts +5 -0
- package/dist/assets/icons/ThreeStars.d.ts.map +1 -0
- package/dist/assets/icons/ThreeStars.js +71 -0
- package/dist/assets/icons/ThreeStars.js.map +1 -0
- package/dist/assets/icons/UnpackagableFile.d.ts +5 -0
- package/dist/assets/icons/UnpackagableFile.d.ts.map +1 -0
- package/dist/assets/icons/UnpackagableFile.js +8 -0
- package/dist/assets/icons/UnpackagableFile.js.map +1 -0
- package/dist/assets/icons/UnpackagableFile.svg +4 -0
- package/dist/assets/icons/UnpackagableFile.svg.js +7 -0
- package/dist/assets/icons/UnpackagableFile.svg.js.map +1 -0
- package/dist/assets/mui_components/PackagableFile.d.ts.map +1 -1
- package/dist/assets/mui_components/PackagableFile.js +5 -4
- package/dist/assets/mui_components/PackagableFile.js.map +1 -1
- package/dist/assets/mui_components/PackagableFile.svg +3 -0
- package/dist/assets/mui_components/PackagableFile.svg.js +7 -0
- package/dist/assets/mui_components/PackagableFile.svg.js.map +1 -0
- package/dist/assets/themed_icons/index.d.ts +1 -2
- package/dist/assets/themed_icons/index.d.ts.map +1 -1
- package/dist/assets/themed_icons/index.js +8 -10
- package/dist/assets/themed_icons/index.js.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +4 -4
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AddToDownloadListV2.js +10 -10
- package/dist/components/AddToDownloadListV2.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.d.ts +1 -2
- package/dist/components/BasePortalCard/BasePortalCard.d.ts.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.js +21 -28
- package/dist/components/BasePortalCard/BasePortalCard.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss +7 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +11 -11
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.d.ts.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +24 -24
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +5 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/CardContainerLogic/index.d.ts +1 -1
- package/dist/components/CardContainerLogic/index.d.ts.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js +12 -9
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +33 -33
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +5 -2
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/ComponentCollapse.d.ts +6 -10
- package/dist/components/ComponentCollapse.d.ts.map +1 -1
- package/dist/components/ComponentCollapse.js +31 -35
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +12 -9
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +8 -3
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +8 -3
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +8 -3
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.d.ts.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js +23 -23
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts +6 -2
- package/dist/components/DownloadCart/AvailableForDownloadTable.d.ts.map +1 -1
- package/dist/components/DownloadCart/AvailableForDownloadTable.js +10 -8
- package/dist/components/DownloadCart/AvailableForDownloadTable.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.css +1 -0
- package/dist/components/DownloadCart/CreatePackageV2.d.ts.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js +50 -46
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.module.scss +38 -0
- package/dist/components/DownloadCart/CreatePackageV2.module.scss.js +14 -0
- package/dist/components/DownloadCart/CreatePackageV2.module.scss.js.map +1 -0
- package/dist/components/DownloadCart/DownloadCartPage.css +1 -0
- package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +316 -186
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.module.scss +217 -0
- package/dist/components/DownloadCart/DownloadCartPage.module.scss.js +48 -0
- package/dist/components/DownloadCart/DownloadCartPage.module.scss.js.map +1 -0
- package/dist/components/DownloadCart/DownloadDetails.js +1 -1
- package/dist/components/DownloadCart/DownloadDetails.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +33 -33
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.d.ts +4 -1
- package/dist/components/DownloadCart/DownloadListTable.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js +156 -236
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/ShowDownloadV2.js +5 -5
- package/dist/components/DownloadCart/ShowDownloadV2.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js +8 -3
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +20 -20
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +3 -3
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +6 -2
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +11 -8
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/FullWidthAlert/FullWidthAlert.d.ts +2 -2
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.d.ts +5 -5
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +117 -103
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts +10 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.d.ts.map +1 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.js +33 -0
- package/dist/components/GenericCard/LabelMaybeWithIcon.js.map +1 -0
- package/dist/components/GenericCard/SynapseCardLabel.d.ts +2 -1
- package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +86 -81
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +7 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +239 -202
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/HeaderCard.js +17 -13
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/Icon/Icon.js +52 -52
- package/dist/components/Icon/Icon.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 +215 -171
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +103 -102
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +6 -3
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +76 -67
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +2 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +83 -58
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +16 -15
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +12 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js +30 -0
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -0
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.d.ts.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js +22 -16
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseChat/index.d.ts +2 -0
- package/dist/components/SynapseChat/index.d.ts.map +1 -1
- package/dist/components/SynapseChat/index.js +5 -3
- package/dist/components/SynapseChat/index.js.map +1 -1
- package/dist/components/SynapseChat/useChatState.d.ts +1 -1
- package/dist/components/SynapseChat/useChatState.d.ts.map +1 -1
- package/dist/components/SynapseChat/useChatState.js +10 -7
- package/dist/components/SynapseChat/useChatState.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +25 -25
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +13 -13
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js +9 -9
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControlsUtils.js.map +1 -1
- package/dist/components/TextToComponentCollapse.d.ts +16 -0
- package/dist/components/TextToComponentCollapse.d.ts.map +1 -0
- package/dist/components/TextToComponentCollapse.js +29 -0
- package/dist/components/TextToComponentCollapse.js.map +1 -0
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +8 -3
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.d.ts +1 -1
- package/dist/components/download_list/DownloadConfirmationUI.js +22 -22
- package/dist/components/download_list/DownloadConfirmationUI.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js +4 -4
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/index.js +85 -83
- package/dist/components/index.js.map +1 -1
- package/dist/components/row_renderers/ObservationCard.js +12 -11
- package/dist/components/row_renderers/ObservationCard.js.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.d.ts +1 -3
- package/dist/components/row_renderers/utils/CardFooter.d.ts.map +1 -1
- package/dist/components/row_renderers/utils/CardFooter.js +31 -45
- package/dist/components/row_renderers/utils/CardFooter.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +8 -3
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +8 -3
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/features/curator/GridPage/GridPage.js +8 -3
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +8 -3
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/index.js +137 -135
- package/dist/index.js.map +1 -1
- package/dist/style/components/_all.scss +0 -1
- package/dist/style/components/_cards.scss +22 -0
- package/dist/style/components/_download-list-v2.scss +1 -1
- package/dist/style/components/_query-wrapper-plot-nav.scss +13 -0
- package/dist/style/main.css +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/context/FullContextProvider.js +9 -9
- package/dist/utils/context/FullContextProvider.js.map +1 -1
- package/dist/utils/context/SynapseContext.d.ts.map +1 -1
- package/dist/utils/context/SynapseContext.js +1 -0
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts +4 -0
- package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
- package/dist/utils/functions/SqlFunctions.js +25 -23
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/package.json +5 -5
- package/dist/assets/themed_icons/Challenge.d.ts +0 -3
- package/dist/assets/themed_icons/Challenge.d.ts.map +0 -1
- package/dist/assets/themed_icons/Challenge.js +0 -25
- package/dist/assets/themed_icons/Challenge.js.map +0 -1
- package/dist/style/components/_download-cart-page.scss +0 -204
|
@@ -41,11 +41,14 @@ import "@mui/material/SvgIcon";
|
|
|
41
41
|
import "../../assets/icons/AccessPending.svg.js";
|
|
42
42
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
43
43
|
import "../../assets/icons/FileWithShield.svg.js";
|
|
44
|
+
import "../../assets/icons/MultiFile.svg.js";
|
|
45
|
+
import "../../assets/icons/UnpackagableFile.svg.js";
|
|
44
46
|
import "../../assets/icons/bioChemicalPhysical.svg.js";
|
|
45
47
|
import "../../assets/icons/computationalTool.svg.js";
|
|
46
48
|
import "../../assets/icons/dataReuse.svg.js";
|
|
47
49
|
import "../../assets/icons/inSilicoModel.svg.js";
|
|
48
50
|
import "../../assets/icons/modelSystem.svg.js";
|
|
51
|
+
import "../../assets/mui_components/PackagableFile.svg.js";
|
|
49
52
|
import "../../assets/icons/spatialProfiling.svg.js";
|
|
50
53
|
import "@mui/icons-material";
|
|
51
54
|
import "react-error-boundary";
|
|
@@ -57,7 +60,7 @@ import "react-transition-group";
|
|
|
57
60
|
import "@mui/system";
|
|
58
61
|
import "../GenericCard/Linkify.js";
|
|
59
62
|
import "../GenericCard/GenericCard.js";
|
|
60
|
-
function
|
|
63
|
+
function to(I) {
|
|
61
64
|
const {
|
|
62
65
|
entityId: r,
|
|
63
66
|
titleColumnName: f,
|
|
@@ -68,7 +71,7 @@ function Wt(I) {
|
|
|
68
71
|
headerImageFileHandleColumnName: x,
|
|
69
72
|
cardDeckType: a,
|
|
70
73
|
linkConfig: B
|
|
71
|
-
} = I,
|
|
74
|
+
} = I, p = b(r), h = {
|
|
72
75
|
concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
|
|
73
76
|
entityId: r,
|
|
74
77
|
partMask: G | K,
|
|
@@ -94,14 +97,14 @@ function Wt(I) {
|
|
|
94
97
|
(i) => {
|
|
95
98
|
const o = i.values;
|
|
96
99
|
o.some((m) => m === null) && console.warn("Row has null value(s) when no nulls expected");
|
|
97
|
-
const T = o[q], k = o[H], w = o[L], A = o[U] ?? "", _ = o[E] ?? "", S = o[F] ?? "",
|
|
100
|
+
const T = o[q], k = o[H], w = o[L], A = o[U] ?? "", _ = o[E] ?? "", S = o[F] ?? "", s = {};
|
|
98
101
|
t?.queryResult.queryResults.headers.forEach(
|
|
99
102
|
(m, Q) => {
|
|
100
|
-
|
|
103
|
+
s[m.name] = Q;
|
|
101
104
|
}
|
|
102
105
|
);
|
|
103
|
-
const { href: v } = V(A, B, o,
|
|
104
|
-
|
|
106
|
+
const { href: v } = V(A, B, o, s), l = d(
|
|
107
|
+
p.data,
|
|
105
108
|
_,
|
|
106
109
|
`syn${i.rowId}`
|
|
107
110
|
), D = l ? /* @__PURE__ */ n(
|
|
@@ -110,7 +113,7 @@ function Wt(I) {
|
|
|
110
113
|
fileHandleAssociation: l
|
|
111
114
|
}
|
|
112
115
|
) : void 0, c = d(
|
|
113
|
-
|
|
116
|
+
p.data,
|
|
114
117
|
S,
|
|
115
118
|
`syn${i.rowId}`
|
|
116
119
|
);
|
|
@@ -133,7 +136,7 @@ function Wt(I) {
|
|
|
133
136
|
return /* @__PURE__ */ n(M, { cards: N || [], cardDeckType: a });
|
|
134
137
|
}
|
|
135
138
|
export {
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
to as TableQueryCardDeck,
|
|
140
|
+
to as default
|
|
138
141
|
};
|
|
139
142
|
//# sourceMappingURL=TableQueryCardDeck.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableQueryCardDeck.js","sources":["../../../src/components/CardDeck/TableQueryCardDeck.tsx"],"sourcesContent":["import { CardDeck } from '@/components/CardDeck/CardDeck'\nimport { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport { ImageFileHandle } from '@/components/widgets/ImageFileHandle'\nimport { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getFileHandleAssociation, getLinkParams } from '../GenericCard'\n\nexport type TableQueryCardDeckProps = {\n entityId: string /* The table entity which should be queried */\n titleColumnName: string /* The column name for the title */\n descriptionColumnName: string /* The column name for the description */\n ctaButtonTextColumnName: string /* The column name for the call to action button text */\n ctaButtonURLColumnName: string /* The column name for the call to action button URL */\n titleIconFileHandleColumnName?: string /* The column name for the title icon image file */\n headerImageFileHandleColumnName?: string /* The column name for the header image file */\n cardDeckType?: 'cckp' | 'b2ai' /* The type of card deck (cckp or b2ai)*/\n linkConfig: CardLink /* The link configuration */\n}\n\n/**\n * Transforms a Synapse table into a card deck.\n */\nexport function TableQueryCardDeck(props: TableQueryCardDeckProps) {\n const {\n entityId,\n titleColumnName,\n descriptionColumnName,\n ctaButtonTextColumnName,\n ctaButtonURLColumnName,\n titleIconFileHandleColumnName,\n headerImageFileHandleColumnName,\n cardDeckType,\n linkConfig,\n } = props\n const entity = useGetEntity(entityId)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const descriptionColumnIndex = getFieldIndex(\n descriptionColumnName,\n queryResultBundle,\n )\n const ctaButtonTextColumnIndex = getFieldIndex(\n ctaButtonTextColumnName,\n queryResultBundle,\n )\n const ctaButtonURLColumnIndex = getFieldIndex(\n ctaButtonURLColumnName,\n queryResultBundle,\n )\n const titleIconColumnIndex = getFieldIndex(\n titleIconFileHandleColumnName,\n queryResultBundle,\n )\n const headerImageColumnIndex = getFieldIndex(\n headerImageFileHandleColumnName,\n queryResultBundle,\n )\n\n const cards = queryResultBundle?.queryResult!.queryResults.rows.map(\n (el): CardDeckCardProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const description = values[descriptionColumnIndex]\n const ctaButtonText = values[ctaButtonTextColumnIndex]\n const ctaButtonURL = values[ctaButtonURLColumnIndex] ?? ''\n const titleIconFileHandleIdValue = values[titleIconColumnIndex] ?? ''\n const headerImageFileHandleIdValue = values[headerImageColumnIndex] ?? ''\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(ctaButtonURL, linkConfig, values, schema)\n\n const titleIconFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n titleIconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const titleIcon = titleIconFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={titleIconFileHandleAssociation}\n />\n ) : undefined\n\n const headerImageFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n headerImageFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const headerImage = headerImageFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={headerImageFileHandleAssociation}\n />\n ) : undefined\n\n return {\n title,\n description,\n ctaButtonText,\n ctaButtonURL: href,\n titleIcon,\n headerImage,\n cardDeckType,\n } satisfies CardDeckCardProps\n },\n )\n\n return <CardDeck cards={cards || []} cardDeckType={cardDeckType} />\n}\n\nexport default TableQueryCardDeck\n"],"names":["TableQueryCardDeck","props","entityId","titleColumnName","descriptionColumnName","ctaButtonTextColumnName","ctaButtonURLColumnName","titleIconFileHandleColumnName","headerImageFileHandleColumnName","cardDeckType","linkConfig","entity","useGetEntity","queryBundleRequest","SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS","SynapseConstants.BUNDLE_MASK_QUERY_RESULTS","queryResultBundle","useGetQueryResultBundle","titleColumnIndex","getFieldIndex","descriptionColumnIndex","ctaButtonTextColumnIndex","ctaButtonURLColumnIndex","titleIconColumnIndex","headerImageColumnIndex","cards","el","values","value","title","description","ctaButtonText","ctaButtonURL","titleIconFileHandleIdValue","headerImageFileHandleIdValue","schema","header","colIndex","href","getLinkParams","titleIconFileHandleAssociation","getFileHandleAssociation","titleIcon","jsx","ImageFileHandle","headerImageFileHandleAssociation","CardDeck"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableQueryCardDeck.js","sources":["../../../src/components/CardDeck/TableQueryCardDeck.tsx"],"sourcesContent":["import { CardDeck } from '@/components/CardDeck/CardDeck'\nimport { CardDeckCardProps } from '@/components/CardDeck/CardDeckCardProps'\nimport { ImageFileHandle } from '@/components/widgets/ImageFileHandle'\nimport { useGetEntity } from '@/synapse-queries/entity/useEntity'\nimport useGetQueryResultBundle from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { SynapseConstants } from '@/utils'\nimport { getFieldIndex } from '@/utils/functions/queryUtils'\nimport { QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { CardLink } from '../CardContainer/CardLink'\nimport { getFileHandleAssociation, getLinkParams } from '../GenericCard'\n\nexport type TableQueryCardDeckProps = {\n entityId: string /* The table entity which should be queried */\n titleColumnName: string /* The column name for the title */\n descriptionColumnName: string /* The column name for the description */\n ctaButtonTextColumnName: string /* The column name for the call to action button text */\n ctaButtonURLColumnName: string /* The column name for the call to action button URL */\n titleIconFileHandleColumnName?: string /* The column name for the title icon image file */\n headerImageFileHandleColumnName?: string /* The column name for the header image file */\n cardDeckType?: 'cckp' | 'b2ai' /* The type of card deck (cckp or b2ai)*/\n linkConfig: CardLink /* The link configuration */\n}\n\n/**\n * Transforms a Synapse table into a card deck.\n */\nexport function TableQueryCardDeck(props: TableQueryCardDeckProps) {\n const {\n entityId,\n titleColumnName,\n descriptionColumnName,\n ctaButtonTextColumnName,\n ctaButtonURLColumnName,\n titleIconFileHandleColumnName,\n headerImageFileHandleColumnName,\n cardDeckType,\n linkConfig,\n } = props\n const entity = useGetEntity(entityId)\n const queryBundleRequest: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n query: {\n sql: `select * from ${entityId}`,\n },\n }\n const { data: queryResultBundle } =\n useGetQueryResultBundle(queryBundleRequest)\n\n const titleColumnIndex = getFieldIndex(titleColumnName, queryResultBundle)\n const descriptionColumnIndex = getFieldIndex(\n descriptionColumnName,\n queryResultBundle,\n )\n const ctaButtonTextColumnIndex = getFieldIndex(\n ctaButtonTextColumnName,\n queryResultBundle,\n )\n const ctaButtonURLColumnIndex = getFieldIndex(\n ctaButtonURLColumnName,\n queryResultBundle,\n )\n const titleIconColumnIndex = getFieldIndex(\n titleIconFileHandleColumnName,\n queryResultBundle,\n )\n const headerImageColumnIndex = getFieldIndex(\n headerImageFileHandleColumnName,\n queryResultBundle,\n )\n\n const cards = queryResultBundle?.queryResult!.queryResults.rows.map(\n (el): CardDeckCardProps => {\n const values = el.values as string[]\n if (values.some(value => value === null)) {\n // We cast values above assuming there are no null values, emit a warning just in case.\n console.warn('Row has null value(s) when no nulls expected')\n }\n\n const title = values[titleColumnIndex]\n const description = values[descriptionColumnIndex]\n const ctaButtonText = values[ctaButtonTextColumnIndex]\n const ctaButtonURL = values[ctaButtonURLColumnIndex] ?? ''\n const titleIconFileHandleIdValue = values[titleIconColumnIndex] ?? ''\n const headerImageFileHandleIdValue = values[headerImageColumnIndex] ?? ''\n\n const schema: Record<string, number> = {}\n queryResultBundle?.queryResult!.queryResults.headers.forEach(\n (header, colIndex) => {\n schema[header.name] = colIndex\n },\n )\n const { href } = getLinkParams(ctaButtonURL, linkConfig, values, schema)\n\n const titleIconFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n titleIconFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const titleIcon = titleIconFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={titleIconFileHandleAssociation}\n />\n ) : undefined\n\n const headerImageFileHandleAssociation = getFileHandleAssociation(\n entity.data,\n headerImageFileHandleIdValue,\n `syn${el.rowId}`,\n )\n\n const headerImage = headerImageFileHandleAssociation ? (\n <ImageFileHandle\n fileHandleAssociation={headerImageFileHandleAssociation}\n />\n ) : undefined\n\n return {\n title,\n description,\n ctaButtonText,\n ctaButtonURL: href,\n titleIcon,\n headerImage,\n cardDeckType,\n } satisfies CardDeckCardProps\n },\n )\n\n return <CardDeck cards={cards || []} cardDeckType={cardDeckType} />\n}\n\nexport default TableQueryCardDeck\n"],"names":["TableQueryCardDeck","props","entityId","titleColumnName","descriptionColumnName","ctaButtonTextColumnName","ctaButtonURLColumnName","titleIconFileHandleColumnName","headerImageFileHandleColumnName","cardDeckType","linkConfig","entity","useGetEntity","queryBundleRequest","SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS","SynapseConstants.BUNDLE_MASK_QUERY_RESULTS","queryResultBundle","useGetQueryResultBundle","titleColumnIndex","getFieldIndex","descriptionColumnIndex","ctaButtonTextColumnIndex","ctaButtonURLColumnIndex","titleIconColumnIndex","headerImageColumnIndex","cards","el","values","value","title","description","ctaButtonText","ctaButtonURL","titleIconFileHandleIdValue","headerImageFileHandleIdValue","schema","header","colIndex","href","getLinkParams","titleIconFileHandleAssociation","getFileHandleAssociation","titleIcon","jsx","ImageFileHandle","headerImageFileHandleAssociation","CardDeck"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,SAASA,GAAmBC,GAAgC;AACjE,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,yBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,iCAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,IACET,GACEU,IAASC,EAAaV,CAAQ,GAC9BW,IAAyC;AAAA,IAC7C,cAAc;AAAA,IACd,UAAAX;AAAA,IACA,UACEY,IACAC;AAAAA,IACF,OAAO;AAAA,MACL,KAAK,iBAAiBb,CAAQ;AAAA,IAAA;AAAA,EAChC,GAEI,EAAE,MAAMc,MACZC,EAAwBJ,CAAkB,GAEtCK,IAAmBC,EAAchB,GAAiBa,CAAiB,GACnEI,IAAyBD;AAAA,IAC7Bf;AAAA,IACAY;AAAA,EAAA,GAEIK,IAA2BF;AAAA,IAC/Bd;AAAA,IACAW;AAAA,EAAA,GAEIM,IAA0BH;AAAA,IAC9Bb;AAAA,IACAU;AAAA,EAAA,GAEIO,IAAuBJ;AAAA,IAC3BZ;AAAA,IACAS;AAAA,EAAA,GAEIQ,IAAyBL;AAAA,IAC7BX;AAAA,IACAQ;AAAA,EAAA,GAGIS,IAAQT,GAAmB,YAAa,aAAa,KAAK;AAAA,IAC9D,CAACU,MAA0B;AACzB,YAAMC,IAASD,EAAG;AAClB,MAAIC,EAAO,KAAK,CAAAC,MAASA,MAAU,IAAI,KAErC,QAAQ,KAAK,8CAA8C;AAG7D,YAAMC,IAAQF,EAAOT,CAAgB,GAC/BY,IAAcH,EAAOP,CAAsB,GAC3CW,IAAgBJ,EAAON,CAAwB,GAC/CW,IAAeL,EAAOL,CAAuB,KAAK,IAClDW,IAA6BN,EAAOJ,CAAoB,KAAK,IAC7DW,IAA+BP,EAAOH,CAAsB,KAAK,IAEjEW,IAAiC,CAAA;AACvC,MAAAnB,GAAmB,YAAa,aAAa,QAAQ;AAAA,QACnD,CAACoB,GAAQC,MAAa;AACpB,UAAAF,EAAOC,EAAO,IAAI,IAAIC;AAAA,QACxB;AAAA,MAAA;AAEF,YAAM,EAAE,MAAAC,EAAA,IAASC,EAAcP,GAActB,GAAYiB,GAAQQ,CAAM,GAEjEK,IAAiCC;AAAA,QACrC9B,EAAO;AAAA,QACPsB;AAAA,QACA,MAAMP,EAAG,KAAK;AAAA,MAAA,GAGVgB,IAAYF,IAChB,gBAAAG;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,uBAAuBJ;AAAA,QAAA;AAAA,MAAA,IAEvB,QAEEK,IAAmCJ;AAAA,QACvC9B,EAAO;AAAA,QACPuB;AAAA,QACA,MAAMR,EAAG,KAAK;AAAA,MAAA;AAShB,aAAO;AAAA,QACL,OAAAG;AAAA,QACA,aAAAC;AAAA,QACA,eAAAC;AAAA,QACA,cAAcO;AAAA,QACd,WAAAI;AAAA,QACA,aAZkBG,IAClB,gBAAAF;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,uBAAuBC;AAAA,UAAA;AAAA,QAAA,IAEvB;AAAA,QASF,cAAApC;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGF,2BAAQqC,GAAA,EAAS,OAAOrB,KAAS,CAAA,GAAI,cAAAhB,GAA4B;AACnE;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as C, Fragment as w, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import "../../synapse-client/SynapseClient.js";
|
|
3
3
|
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
|
|
4
4
|
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
|
|
@@ -13,7 +13,7 @@ import "../../utils/PermissionLevelToAccessType.js";
|
|
|
13
13
|
import { useCallback as l } from "react";
|
|
14
14
|
import { useSynapseContext as E } from "../../utils/context/SynapseContext.js";
|
|
15
15
|
import "use-deep-compare-effect";
|
|
16
|
-
import { Box as
|
|
16
|
+
import { Box as s, Button as T } from "@mui/material";
|
|
17
17
|
import "../../utils/hooks/useCookiePreferences.js";
|
|
18
18
|
import "../../utils/hooks/useSourceAppConfigs.js";
|
|
19
19
|
import "universal-cookie";
|
|
@@ -26,75 +26,75 @@ import "lodash-es/isEmpty";
|
|
|
26
26
|
import "lodash-es/isEqual";
|
|
27
27
|
import "lodash-es/xorWith";
|
|
28
28
|
import "react-router";
|
|
29
|
-
import { EntityType as
|
|
29
|
+
import { EntityType as m } from "@sage-bionetworks/synapse-client";
|
|
30
30
|
import "../../utils/types/IsType.js";
|
|
31
31
|
import { useAddFileBatchToDownloadList as g } from "../../synapse-queries/download/useDownloadList.js";
|
|
32
32
|
import A from "@mui/icons-material/AddCircleTwoTone";
|
|
33
33
|
import { EntityChildrenDetails as S } from "../EntityFinder/details/configurations/EntityChildrenDetails.js";
|
|
34
|
-
import { DetailsViewColumn as
|
|
34
|
+
import { DetailsViewColumn as i } from "../EntityFinder/details/view/DetailsView.js";
|
|
35
35
|
import { useEntitySelection as x } from "../EntityFinder/useEntitySelection.js";
|
|
36
36
|
import { VersionSelectionType as b } from "../EntityFinder/VersionSelectionType.js";
|
|
37
|
-
import { displayToast as
|
|
38
|
-
function
|
|
39
|
-
parentContainerId:
|
|
37
|
+
import { displayToast as p } from "../ToastMessage/ToastMessage.js";
|
|
38
|
+
function ao({
|
|
39
|
+
parentContainerId: a
|
|
40
40
|
}) {
|
|
41
|
-
const { downloadCartPageUrl: d } = E(), c = !0, { selectedEntities: o, toggleSelection: u, setInitialVersion: f } = x(c), { mutate:
|
|
41
|
+
const { downloadCartPageUrl: d } = E(), c = !0, { selectedEntities: o, toggleSelection: u, setInitialVersion: f } = x(c), { mutate: r } = g({
|
|
42
42
|
onSuccess: () => {
|
|
43
|
-
|
|
44
|
-
"File(s) were successfully added to your Download
|
|
43
|
+
p(
|
|
44
|
+
"File(s) were successfully added to your Download List.",
|
|
45
45
|
"success",
|
|
46
46
|
{
|
|
47
47
|
primaryButtonConfig: {
|
|
48
|
-
text: "View Download
|
|
48
|
+
text: "View Download List",
|
|
49
49
|
onClick: () => window.location.href = d
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
);
|
|
53
53
|
},
|
|
54
54
|
onError: (t) => {
|
|
55
|
-
|
|
56
|
-
`Unable to add the file to your Download
|
|
55
|
+
p(
|
|
56
|
+
`Unable to add the file to your Download List. ${t.reason}`,
|
|
57
57
|
"danger"
|
|
58
58
|
);
|
|
59
59
|
}
|
|
60
|
-
}),
|
|
60
|
+
}), D = l(
|
|
61
61
|
(t) => o.has(t.id),
|
|
62
62
|
[o]
|
|
63
|
-
),
|
|
63
|
+
), h = l(() => {
|
|
64
64
|
const t = Array.from(o.values()).map((n) => ({
|
|
65
65
|
fileEntityId: n.targetId,
|
|
66
66
|
versionNumber: n.targetVersionNumber
|
|
67
67
|
}));
|
|
68
|
-
|
|
69
|
-
}, [o,
|
|
68
|
+
r(t);
|
|
69
|
+
}, [o, r]), y = {
|
|
70
70
|
versionSelection: b.REQUIRED,
|
|
71
71
|
selectColumnType: "checkbox",
|
|
72
72
|
enableSelectAll: !0,
|
|
73
|
-
visibleTypes: [
|
|
73
|
+
visibleTypes: [m.file],
|
|
74
74
|
selected: o,
|
|
75
|
-
selectableTypes: [
|
|
76
|
-
isIdSelected:
|
|
75
|
+
selectableTypes: [m.file],
|
|
76
|
+
isIdSelected: D,
|
|
77
77
|
isSelectable: () => !0,
|
|
78
78
|
toggleSelection: u,
|
|
79
79
|
setInitialVersion: f,
|
|
80
80
|
hiddenColumns: [
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
i.BADGES,
|
|
82
|
+
i.ADD_TO_DOWNLOAD_CART,
|
|
83
|
+
i.CREATED_ON,
|
|
84
|
+
i.VERSION,
|
|
85
|
+
i.MODIFIED_BY
|
|
86
86
|
]
|
|
87
87
|
};
|
|
88
|
-
return /* @__PURE__ */
|
|
89
|
-
/* @__PURE__ */ e(
|
|
88
|
+
return /* @__PURE__ */ C(w, { children: [
|
|
89
|
+
/* @__PURE__ */ e(s, { children: /* @__PURE__ */ e(
|
|
90
90
|
S,
|
|
91
91
|
{
|
|
92
|
-
parentContainerId:
|
|
93
|
-
...
|
|
92
|
+
parentContainerId: a,
|
|
93
|
+
...y
|
|
94
94
|
}
|
|
95
95
|
) }),
|
|
96
96
|
/* @__PURE__ */ e(
|
|
97
|
-
|
|
97
|
+
s,
|
|
98
98
|
{
|
|
99
99
|
sx: {
|
|
100
100
|
mt: 4
|
|
@@ -105,9 +105,9 @@ function po({
|
|
|
105
105
|
endIcon: /* @__PURE__ */ e(A, {}),
|
|
106
106
|
variant: "outlined",
|
|
107
107
|
sx: { alignSelf: "flex-end", height: "47px" },
|
|
108
|
-
onClick:
|
|
108
|
+
onClick: h,
|
|
109
109
|
disabled: !o.toArray().length,
|
|
110
|
-
children: "Add to Download
|
|
110
|
+
children: "Add to Download List"
|
|
111
111
|
}
|
|
112
112
|
)
|
|
113
113
|
}
|
|
@@ -115,6 +115,6 @@ function po({
|
|
|
115
115
|
] });
|
|
116
116
|
}
|
|
117
117
|
export {
|
|
118
|
-
|
|
118
|
+
ao as ChallengeDataDownload
|
|
119
119
|
};
|
|
120
120
|
//# sourceMappingURL=ChallengeDataDownload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeDataDownload.js","sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download
|
|
1
|
+
{"version":3,"file":"ChallengeDataDownload.js","sources":["../../../src/components/ChallengeDataDownload/ChallengeDataDownload.tsx"],"sourcesContent":["import { useAddFileBatchToDownloadList } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport AddCircleTwoToneIcon from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button } from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { useCallback } from 'react'\nimport { EntityChildrenDetails } from '../EntityFinder/details/configurations/EntityChildrenDetails'\nimport { EntityDetailsListSharedProps } from '../EntityFinder/details/EntityDetailsList'\nimport { DetailsViewColumn } from '../EntityFinder/details/view/DetailsView'\nimport { EntityFinderHeader } from '../EntityFinder/EntityFinderHeader'\nimport { useEntitySelection } from '../EntityFinder/useEntitySelection'\nimport { VersionSelectionType } from '../EntityFinder/VersionSelectionType'\nimport { displayToast } from '../ToastMessage'\n\nexport type ChallengeDataDownloadProps = {\n parentContainerId: string\n}\n\nexport function ChallengeDataDownload({\n parentContainerId,\n}: ChallengeDataDownloadProps) {\n const { downloadCartPageUrl } = useSynapseContext()\n const selectMultiple = true\n const { selectedEntities, toggleSelection, setInitialVersion } =\n useEntitySelection(selectMultiple)\n\n const { mutate: addBatchToDownloadList } = useAddFileBatchToDownloadList({\n onSuccess: () => {\n displayToast(\n 'File(s) were successfully added to your Download List.',\n 'success',\n {\n primaryButtonConfig: {\n text: 'View Download List',\n onClick: () => (window.location.href = downloadCartPageUrl),\n },\n },\n )\n },\n onError: e => {\n displayToast(\n `Unable to add the file to your Download List. ${e.reason}`,\n 'danger',\n )\n },\n })\n\n const isIdSelected = useCallback(\n (entity: EntityFinderHeader) => {\n return selectedEntities.has(entity.id)\n },\n [selectedEntities],\n )\n\n const onAddClick = useCallback(() => {\n const entities = Array.from(selectedEntities.values()).map(reference => {\n return {\n fileEntityId: reference.targetId,\n versionNumber: reference.targetVersionNumber,\n }\n })\n addBatchToDownloadList(entities)\n }, [selectedEntities, addBatchToDownloadList])\n\n const sharedProps: EntityDetailsListSharedProps = {\n versionSelection: VersionSelectionType.REQUIRED,\n selectColumnType: 'checkbox',\n enableSelectAll: true,\n visibleTypes: [EntityType.file],\n selected: selectedEntities,\n selectableTypes: [EntityType.file],\n isIdSelected,\n isSelectable: () => true,\n toggleSelection,\n setInitialVersion,\n hiddenColumns: [\n DetailsViewColumn.BADGES,\n DetailsViewColumn.ADD_TO_DOWNLOAD_CART,\n DetailsViewColumn.CREATED_ON,\n DetailsViewColumn.VERSION,\n DetailsViewColumn.MODIFIED_BY,\n ],\n }\n return (\n <>\n <Box>\n <EntityChildrenDetails\n parentContainerId={parentContainerId}\n {...sharedProps}\n />\n </Box>\n <Box\n sx={{\n mt: 4,\n }}\n >\n <Button\n endIcon={<AddCircleTwoToneIcon />}\n variant={'outlined'}\n sx={{ alignSelf: 'flex-end', height: '47px' }}\n onClick={onAddClick}\n disabled={!selectedEntities.toArray().length}\n >\n Add to Download List\n </Button>\n </Box>\n </>\n )\n}\n"],"names":["ChallengeDataDownload","parentContainerId","downloadCartPageUrl","useSynapseContext","selectMultiple","selectedEntities","toggleSelection","setInitialVersion","useEntitySelection","addBatchToDownloadList","useAddFileBatchToDownloadList","displayToast","e","isIdSelected","useCallback","entity","onAddClick","entities","reference","sharedProps","VersionSelectionType","EntityType","DetailsViewColumn","jsxs","Fragment","jsx","Box","EntityChildrenDetails","Button","AddCircleTwoToneIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,SAASA,GAAsB;AAAA,EACpC,mBAAAC;AACF,GAA+B;AAC7B,QAAM,EAAE,qBAAAC,EAAA,IAAwBC,EAAA,GAC1BC,IAAiB,IACjB,EAAE,kBAAAC,GAAkB,iBAAAC,GAAiB,mBAAAC,EAAA,IACzCC,EAAmBJ,CAAc,GAE7B,EAAE,QAAQK,EAAA,IAA2BC,EAA8B;AAAA,IACvE,WAAW,MAAM;AACf,MAAAC;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,UACE,qBAAqB;AAAA,YACnB,MAAM;AAAA,YACN,SAAS,MAAO,OAAO,SAAS,OAAOT;AAAA,UAAA;AAAA,QACzC;AAAA,MACF;AAAA,IAEJ;AAAA,IACA,SAAS,CAAAU,MAAK;AACZ,MAAAD;AAAA,QACE,iDAAiDC,EAAE,MAAM;AAAA,QACzD;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA,CACD,GAEKC,IAAeC;AAAA,IACnB,CAACC,MACQV,EAAiB,IAAIU,EAAO,EAAE;AAAA,IAEvC,CAACV,CAAgB;AAAA,EAAA,GAGbW,IAAaF,EAAY,MAAM;AACnC,UAAMG,IAAW,MAAM,KAAKZ,EAAiB,QAAQ,EAAE,IAAI,CAAAa,OAClD;AAAA,MACL,cAAcA,EAAU;AAAA,MACxB,eAAeA,EAAU;AAAA,IAAA,EAE5B;AACD,IAAAT,EAAuBQ,CAAQ;AAAA,EACjC,GAAG,CAACZ,GAAkBI,CAAsB,CAAC,GAEvCU,IAA4C;AAAA,IAChD,kBAAkBC,EAAqB;AAAA,IACvC,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,cAAc,CAACC,EAAW,IAAI;AAAA,IAC9B,UAAUhB;AAAA,IACV,iBAAiB,CAACgB,EAAW,IAAI;AAAA,IACjC,cAAAR;AAAA,IACA,cAAc,MAAM;AAAA,IACpB,iBAAAP;AAAA,IACA,mBAAAC;AAAA,IACA,eAAe;AAAA,MACbe,EAAkB;AAAA,MAClBA,EAAkB;AAAA,MAClBA,EAAkB;AAAA,MAClBA,EAAkB;AAAA,MAClBA,EAAkB;AAAA,IAAA;AAAA,EACpB;AAEF,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EACC,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,mBAAA1B;AAAA,QACC,GAAGkB;AAAA,MAAA;AAAA,IAAA,GAER;AAAA,IACA,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,IAAI;AAAA,QAAA;AAAA,QAGN,UAAA,gBAAAD;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,2BAAUC,GAAA,EAAqB;AAAA,YAC/B,SAAS;AAAA,YACT,IAAI,EAAE,WAAW,YAAY,QAAQ,OAAA;AAAA,YACrC,SAASb;AAAA,YACT,UAAU,CAACX,EAAiB,QAAA,EAAU;AAAA,YACvC,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
@@ -43,11 +43,14 @@ import "@mui/material/SvgIcon";
|
|
|
43
43
|
import "../../assets/icons/AccessPending.svg.js";
|
|
44
44
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
45
45
|
import "../../assets/icons/FileWithShield.svg.js";
|
|
46
|
+
import "../../assets/icons/MultiFile.svg.js";
|
|
47
|
+
import "../../assets/icons/UnpackagableFile.svg.js";
|
|
46
48
|
import "../../assets/icons/bioChemicalPhysical.svg.js";
|
|
47
49
|
import "../../assets/icons/computationalTool.svg.js";
|
|
48
50
|
import "../../assets/icons/dataReuse.svg.js";
|
|
49
51
|
import "../../assets/icons/inSilicoModel.svg.js";
|
|
50
52
|
import "../../assets/icons/modelSystem.svg.js";
|
|
53
|
+
import "../../assets/mui_components/PackagableFile.svg.js";
|
|
51
54
|
import "../../assets/icons/spatialProfiling.svg.js";
|
|
52
55
|
/* empty css */
|
|
53
56
|
import "../Authentication/AuthenticationMethodSelection.js";
|
|
@@ -58,7 +61,7 @@ import "react-hot-toast";
|
|
|
58
61
|
import "react-transition-group";
|
|
59
62
|
import "../Authentication/RecoveryCodeGrid.js";
|
|
60
63
|
const H = "Two-factor authentication is required to change your password. Your password has not yet been changed.";
|
|
61
|
-
function
|
|
64
|
+
function $o(p) {
|
|
62
65
|
const _ = W("/reset2FA"), w = Y(
|
|
63
66
|
_,
|
|
64
67
|
"twoFAResetToken"
|
|
@@ -176,6 +179,6 @@ function zo(p) {
|
|
|
176
179
|
}
|
|
177
180
|
export {
|
|
178
181
|
H as TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT,
|
|
179
|
-
|
|
182
|
+
$o as default
|
|
180
183
|
};
|
|
181
184
|
//# sourceMappingURL=useChangePasswordFormState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChangePasswordFormState.js","sources":["../../../src/components/ChangePassword/useChangePasswordFormState.tsx"],"sourcesContent":["import { useChangePassword, useResetTwoFactorAuth } from '@/synapse-queries'\nimport appendFinalQueryParamKey from '@/utils/appendFinalQueryParamKey'\nimport { useOneSageURL } from '@/utils/hooks'\nimport { Alert, Typography } from '@mui/material'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n ChangePasswordWithCurrentPassword,\n ChangePasswordWithToken as ChangePasswordWithTokenObject,\n ChangePasswordWithTwoFactorAuthToken,\n PasswordResetSignedToken,\n TwoFactorAuthOtpType,\n TwoFactorAuthResetRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport { ONE_TIME_PASSWORD_STEP, OneTimePasswordForm } from '../Authentication'\nimport {\n RECOVERY_CODE_GUIDANCE_TEXT_SHORT,\n TOTP_GUIDANCE_TEXT,\n} from '../Authentication/Constants'\n\nexport const TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT =\n 'Two-factor authentication is required to change your password. Your password has not yet been changed.'\n\nexport type UseChangePasswordFormStateOptions = {\n hideReset2FA?: boolean\n onChangePasswordSuccess?: () => void\n}\n\n/**\n * Hook that handles submitting a change password request and prompting the user for 2FA if necessary.\n * @param options\n */\nexport default function useChangePasswordFormState(\n options?: UseChangePasswordFormStateOptions,\n) {\n const defaultTwoFactorAuthResetUrl = useOneSageURL('/reset2FA')\n const twoFactorAuthResetUri = appendFinalQueryParamKey(\n defaultTwoFactorAuthResetUrl,\n 'twoFAResetToken',\n )\n\n // Store current and new password in state so that we can re-use it if 2FA is required\n const [currentPassword, setCurrentPassword] = useState<string>('')\n const [newPassword, setNewPassword] = useState<string>('')\n const [twoFactorAuthErrorResponse, setTwoFactorAuthErrorResponse] = useState<\n TwoFactorAuthErrorResponse | undefined\n >()\n const [otpStep, setOtpStep] =\n useState<ONE_TIME_PASSWORD_STEP>('VERIFICATION_CODE')\n const [successfullyChangedPassword, setSuccessfullyChangedPassword] =\n useState(false)\n const {\n mutate: changePassword,\n isPending,\n error,\n } = useChangePassword({\n onSuccess: maybeTwoFactorResponse => {\n if (maybeTwoFactorResponse) {\n // We store the 2FA Error Response in state because the `changePasswordResult` may change before we are done with the 2FA code,\n // e.g. if the user enters the wrong 2FA code\n setTwoFactorAuthErrorResponse(maybeTwoFactorResponse)\n } else {\n setSuccessfullyChangedPassword(true)\n setTwoFactorAuthErrorResponse(undefined)\n if (options?.onChangePasswordSuccess) {\n options.onChangePasswordSuccess()\n }\n }\n },\n })\n\n const handleChangePasswordWithCurrentPassword = useCallback(\n (username: string, currentPassword: string, newPassword: string) => {\n setCurrentPassword(currentPassword)\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithCurrentPassword = {\n username,\n currentPassword,\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithCurrentPassword',\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithResetToken = useCallback(\n (newPassword: string, passwordChangeToken: PasswordResetSignedToken) => {\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithTokenObject = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithToken',\n passwordChangeToken: passwordChangeToken,\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithOtp = useCallback(\n (newPassword: string, code: string, otpType: TwoFactorAuthOtpType) => {\n if (twoFactorAuthErrorResponse) {\n const changeRequest: ChangePasswordWithTwoFactorAuthToken = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithTwoFactorAuthToken',\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaToken: twoFactorAuthErrorResponse.twoFaToken!,\n otpType: otpType,\n otpCode: code,\n }\n changePassword(changeRequest)\n }\n },\n [changePassword, twoFactorAuthErrorResponse],\n )\n const promptForTwoFactorAuth = Boolean(twoFactorAuthErrorResponse)\n const {\n mutate: resetTwoFactorAuth,\n isSuccess: twoFactorAuthResetIsSuccess,\n isPending: twoFactorAuthResetIsPending,\n } = useResetTwoFactorAuth()\n\n const beginTwoFactorAuthReset = useCallback(\n (twoFaResetEndpoint: string) => {\n if (twoFactorAuthErrorResponse) {\n const request: TwoFactorAuthResetRequest = {\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaResetEndpoint: twoFaResetEndpoint,\n // When attempting to reset 2FA while resetting a password, the current password must be used to request 2FA reset\n password: currentPassword,\n }\n resetTwoFactorAuth(request)\n }\n },\n [currentPassword, resetTwoFactorAuth, twoFactorAuthErrorResponse],\n )\n\n const TwoFactorAuthPrompt = useCallback(() => {\n if (!promptForTwoFactorAuth) {\n return <></>\n }\n return (\n <>\n {otpStep === 'VERIFICATION_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {TOTP_GUIDANCE_TEXT}\n </Typography>\n )}\n {otpStep === 'RECOVERY_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {RECOVERY_CODE_GUIDANCE_TEXT_SHORT}\n </Typography>\n )}\n <OneTimePasswordForm\n step={otpStep}\n onClickUseTOTP={() => {\n setOtpStep('VERIFICATION_CODE')\n }}\n onClickUseBackupCode={() => {\n setOtpStep('RECOVERY_CODE')\n }}\n loginIsPending={isPending}\n onSubmit={(code, otpType) =>\n handleChangePasswordWithOtp(newPassword, code, otpType)\n }\n hideReset2FA={options?.hideReset2FA}\n onClickPromptReset2FA={() => {\n setOtpStep('DISABLE_2FA_PROMPT')\n }}\n onClickReset2FA={() => {\n beginTwoFactorAuthReset(twoFactorAuthResetUri)\n }}\n twoFactorAuthResetIsPending={twoFactorAuthResetIsPending}\n twoFactorAuthResetIsSuccess={twoFactorAuthResetIsSuccess}\n />\n {(otpStep === 'RECOVERY_CODE' || otpStep === 'VERIFICATION_CODE') && (\n <Alert severity={'info'} sx={{ my: 2 }}>\n {TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT}\n </Alert>\n )}\n {otpStep === 'DISABLE_2FA_PROMPT' && twoFactorAuthResetIsSuccess && (\n <Alert severity={'warning'} sx={{ my: 2 }}>\n <strong>Your password has not been changed.</strong> To disable\n two-factor authentication, you may be required to enter your current\n password after clicking the link sent to your email address.\n </Alert>\n )}\n </>\n )\n }, [\n beginTwoFactorAuthReset,\n handleChangePasswordWithOtp,\n isPending,\n newPassword,\n options?.hideReset2FA,\n otpStep,\n promptForTwoFactorAuth,\n twoFactorAuthResetIsPending,\n twoFactorAuthResetIsSuccess,\n twoFactorAuthResetUri,\n ])\n\n return {\n successfullyChangedPassword,\n isPending,\n error,\n promptForTwoFactorAuth,\n TwoFactorAuthPrompt: TwoFactorAuthPrompt,\n handleChangePasswordWithCurrentPassword,\n handleChangePasswordWithResetToken,\n }\n}\n"],"names":["TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT","useChangePasswordFormState","options","defaultTwoFactorAuthResetUrl","useOneSageURL","twoFactorAuthResetUri","appendFinalQueryParamKey","currentPassword","setCurrentPassword","useState","newPassword","setNewPassword","twoFactorAuthErrorResponse","setTwoFactorAuthErrorResponse","otpStep","setOtpStep","successfullyChangedPassword","setSuccessfullyChangedPassword","changePassword","isPending","error","useChangePassword","maybeTwoFactorResponse","handleChangePasswordWithCurrentPassword","useCallback","username","handleChangePasswordWithResetToken","passwordChangeToken","handleChangePasswordWithOtp","code","otpType","changeRequest","promptForTwoFactorAuth","resetTwoFactorAuth","twoFactorAuthResetIsSuccess","twoFactorAuthResetIsPending","useResetTwoFactorAuth","beginTwoFactorAuthReset","twoFaResetEndpoint","request","TwoFactorAuthPrompt","jsxs","Fragment","jsx","Typography","TOTP_GUIDANCE_TEXT","RECOVERY_CODE_GUIDANCE_TEXT_SHORT","OneTimePasswordForm","Alert"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMA,IACX;AAWF,SAAwBC,GACtBC,GACA;AACA,QAAMC,IAA+BC,EAAc,WAAW,GACxDC,IAAwBC;AAAA,IAC5BH;AAAA,IACA;AAAA,EAAA,GAII,CAACI,GAAiBC,CAAkB,IAAIC,EAAiB,EAAE,GAC3D,CAACC,GAAaC,CAAc,IAAIF,EAAiB,EAAE,GACnD,CAACG,GAA4BC,CAA6B,IAAIJ,EAAA,GAG9D,CAACK,GAASC,CAAU,IACxBN,EAAiC,mBAAmB,GAChD,CAACO,GAA6BC,CAA8B,IAChER,EAAS,EAAK,GACV;AAAA,IACJ,QAAQS;AAAA,IACR,WAAAC;AAAA,IACA,OAAAC;AAAA,EAAA,IACEC,EAAkB;AAAA,IACpB,WAAW,CAAAC,MAA0B;AACnC,MAAIA,IAGFT,EAA8BS,CAAsB,KAEpDL,EAA+B,EAAI,GACnCJ,EAA8B,MAAS,GACnCX,GAAS,2BACXA,EAAQ,wBAAA;AAAA,IAGd;AAAA,EAAA,CACD,GAEKqB,IAA0CC;AAAA,IAC9C,CAACC,GAAkBlB,GAAyBG,MAAwB;AAClE,MAAAF,EAAmBD,CAAe,GAClCI,EAAeD,CAAW,GAQ1BQ,EAPyD;AAAA,QACvD,UAAAO;AAAA,QACA,iBAAAlB;AAAAA,QACA,aAAAG;AAAAA,QACA,cACE;AAAA,MAAA,CAEwB;AAAA,IAC9B;AAAA,IACA,CAACQ,CAAc;AAAA,EAAA,GAGXQ,IAAqCF;AAAA,IACzC,CAACd,GAAqBiB,MAAkD;AACtE,MAAAhB,EAAeD,CAAW,GAO1BQ,EANqD;AAAA,QACnD,aAAAR;AAAAA,QACA,cACE;AAAA,QACF,qBAAAiB;AAAA,MAAA,CAE0B;AAAA,IAC9B;AAAA,IACA,CAACT,CAAc;AAAA,EAAA,GAGXU,IAA8BJ;AAAA,IAClC,CAACd,GAAqBmB,GAAcC,MAAkC;AACpE,UAAIlB,GAA4B;AAC9B,cAAMmB,IAAsD;AAAA,UAC1D,aAAArB;AAAAA,UACA,cACE;AAAA,UACF,QAAQE,EAA2B;AAAA,UACnC,YAAYA,EAA2B;AAAA,UACvC,SAAAkB;AAAA,UACA,SAASD;AAAA,QAAA;AAEX,QAAAX,EAAea,CAAa;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,CAACb,GAAgBN,CAA0B;AAAA,EAAA,GAEvCoB,IAAyB,EAAQpB,GACjC;AAAA,IACJ,QAAQqB;AAAA,IACR,WAAWC;AAAA,IACX,WAAWC;AAAA,EAAA,IACTC,EAAA,GAEEC,IAA0Bb;AAAA,IAC9B,CAACc,MAA+B;AAC9B,UAAI1B,GAA4B;AAC9B,cAAM2B,IAAqC;AAAA,UACzC,QAAQ3B,EAA2B;AAAA,UACnC,oBAAA0B;AAAA;AAAA,UAEA,UAAU/B;AAAA,QAAA;AAEZ,QAAA0B,EAAmBM,CAAO;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,CAAChC,GAAiB0B,GAAoBrB,CAA0B;AAAA,EAAA,GAG5D4B,IAAsBhB,EAAY,MACjCQ,IAIH,gBAAAS,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA5B,MAAY,uBACX,gBAAA6B,EAACC,GAAA,EAAW,SAAS,SAAS,IAAI,EAAE,IAAI,EAAA,GAAK,OAAO,UACjD,UAAAC,GACH;AAAA,IAED/B,MAAY,mBACX,gBAAA6B,EAACC,GAAA,EAAW,SAAS,SAAS,IAAI,EAAE,IAAI,EAAA,GAAK,OAAO,UACjD,UAAAE,GACH;AAAA,IAEF,gBAAAH;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAMjC;AAAA,QACN,gBAAgB,MAAM;AACpB,UAAAC,EAAW,mBAAmB;AAAA,QAChC;AAAA,QACA,sBAAsB,MAAM;AAC1B,UAAAA,EAAW,eAAe;AAAA,QAC5B;AAAA,QACA,gBAAgBI;AAAA,QAChB,UAAU,CAACU,GAAMC,MACfF,EAA4BlB,GAAamB,GAAMC,CAAO;AAAA,QAExD,cAAc5B,GAAS;AAAA,QACvB,uBAAuB,MAAM;AAC3B,UAAAa,EAAW,oBAAoB;AAAA,QACjC;AAAA,QACA,iBAAiB,MAAM;AACrB,UAAAsB,EAAwBhC,CAAqB;AAAA,QAC/C;AAAA,QACA,6BAAA8B;AAAA,QACA,6BAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,KAEApB,MAAY,mBAAmBA,MAAY,wBAC3C,gBAAA6B,EAACK,GAAA,EAAM,UAAU,QAAQ,IAAI,EAAE,IAAI,EAAA,GAChC,UAAAhD,GACH;AAAA,IAEDc,MAAY,wBAAwBoB,KACnC,gBAAAO,EAACO,GAAA,EAAM,UAAU,WAAW,IAAI,EAAE,IAAI,EAAA,GACpC,UAAA;AAAA,MAAA,gBAAAL,EAAC,YAAO,UAAA,sCAAA,CAAmC;AAAA,MAAS;AAAA,IAAA,EAAA,CAGtD;AAAA,EAAA,GAEJ,IAhDO,gBAAAA,EAAAD,GAAA,EAAE,GAkDV;AAAA,IACDL;AAAA,IACAT;AAAA,IACAT;AAAA,IACAT;AAAA,IACAR,GAAS;AAAA,IACTY;AAAA,IACAkB;AAAA,IACAG;AAAA,IACAD;AAAA,IACA7B;AAAA,EAAA,CACD;AAED,SAAO;AAAA,IACL,6BAAAW;AAAA,IACA,WAAAG;AAAA,IACA,OAAAC;AAAA,IACA,wBAAAY;AAAA,IACA,qBAAAQ;AAAA,IACA,yCAAAjB;AAAA,IACA,oCAAAG;AAAA,EAAA;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"useChangePasswordFormState.js","sources":["../../../src/components/ChangePassword/useChangePasswordFormState.tsx"],"sourcesContent":["import { useChangePassword, useResetTwoFactorAuth } from '@/synapse-queries'\nimport appendFinalQueryParamKey from '@/utils/appendFinalQueryParamKey'\nimport { useOneSageURL } from '@/utils/hooks'\nimport { Alert, Typography } from '@mui/material'\nimport { TwoFactorAuthErrorResponse } from '@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse'\nimport {\n ChangePasswordWithCurrentPassword,\n ChangePasswordWithToken as ChangePasswordWithTokenObject,\n ChangePasswordWithTwoFactorAuthToken,\n PasswordResetSignedToken,\n TwoFactorAuthOtpType,\n TwoFactorAuthResetRequest,\n} from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport { ONE_TIME_PASSWORD_STEP, OneTimePasswordForm } from '../Authentication'\nimport {\n RECOVERY_CODE_GUIDANCE_TEXT_SHORT,\n TOTP_GUIDANCE_TEXT,\n} from '../Authentication/Constants'\n\nexport const TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT =\n 'Two-factor authentication is required to change your password. Your password has not yet been changed.'\n\nexport type UseChangePasswordFormStateOptions = {\n hideReset2FA?: boolean\n onChangePasswordSuccess?: () => void\n}\n\n/**\n * Hook that handles submitting a change password request and prompting the user for 2FA if necessary.\n * @param options\n */\nexport default function useChangePasswordFormState(\n options?: UseChangePasswordFormStateOptions,\n) {\n const defaultTwoFactorAuthResetUrl = useOneSageURL('/reset2FA')\n const twoFactorAuthResetUri = appendFinalQueryParamKey(\n defaultTwoFactorAuthResetUrl,\n 'twoFAResetToken',\n )\n\n // Store current and new password in state so that we can re-use it if 2FA is required\n const [currentPassword, setCurrentPassword] = useState<string>('')\n const [newPassword, setNewPassword] = useState<string>('')\n const [twoFactorAuthErrorResponse, setTwoFactorAuthErrorResponse] = useState<\n TwoFactorAuthErrorResponse | undefined\n >()\n const [otpStep, setOtpStep] =\n useState<ONE_TIME_PASSWORD_STEP>('VERIFICATION_CODE')\n const [successfullyChangedPassword, setSuccessfullyChangedPassword] =\n useState(false)\n const {\n mutate: changePassword,\n isPending,\n error,\n } = useChangePassword({\n onSuccess: maybeTwoFactorResponse => {\n if (maybeTwoFactorResponse) {\n // We store the 2FA Error Response in state because the `changePasswordResult` may change before we are done with the 2FA code,\n // e.g. if the user enters the wrong 2FA code\n setTwoFactorAuthErrorResponse(maybeTwoFactorResponse)\n } else {\n setSuccessfullyChangedPassword(true)\n setTwoFactorAuthErrorResponse(undefined)\n if (options?.onChangePasswordSuccess) {\n options.onChangePasswordSuccess()\n }\n }\n },\n })\n\n const handleChangePasswordWithCurrentPassword = useCallback(\n (username: string, currentPassword: string, newPassword: string) => {\n setCurrentPassword(currentPassword)\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithCurrentPassword = {\n username,\n currentPassword,\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithCurrentPassword',\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithResetToken = useCallback(\n (newPassword: string, passwordChangeToken: PasswordResetSignedToken) => {\n setNewPassword(newPassword)\n const changeRequest: ChangePasswordWithTokenObject = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithToken',\n passwordChangeToken: passwordChangeToken,\n }\n changePassword(changeRequest)\n },\n [changePassword],\n )\n\n const handleChangePasswordWithOtp = useCallback(\n (newPassword: string, code: string, otpType: TwoFactorAuthOtpType) => {\n if (twoFactorAuthErrorResponse) {\n const changeRequest: ChangePasswordWithTwoFactorAuthToken = {\n newPassword,\n concreteType:\n 'org.sagebionetworks.repo.model.auth.ChangePasswordWithTwoFactorAuthToken',\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaToken: twoFactorAuthErrorResponse.twoFaToken!,\n otpType: otpType,\n otpCode: code,\n }\n changePassword(changeRequest)\n }\n },\n [changePassword, twoFactorAuthErrorResponse],\n )\n const promptForTwoFactorAuth = Boolean(twoFactorAuthErrorResponse)\n const {\n mutate: resetTwoFactorAuth,\n isSuccess: twoFactorAuthResetIsSuccess,\n isPending: twoFactorAuthResetIsPending,\n } = useResetTwoFactorAuth()\n\n const beginTwoFactorAuthReset = useCallback(\n (twoFaResetEndpoint: string) => {\n if (twoFactorAuthErrorResponse) {\n const request: TwoFactorAuthResetRequest = {\n userId: twoFactorAuthErrorResponse.userId!,\n twoFaResetEndpoint: twoFaResetEndpoint,\n // When attempting to reset 2FA while resetting a password, the current password must be used to request 2FA reset\n password: currentPassword,\n }\n resetTwoFactorAuth(request)\n }\n },\n [currentPassword, resetTwoFactorAuth, twoFactorAuthErrorResponse],\n )\n\n const TwoFactorAuthPrompt = useCallback(() => {\n if (!promptForTwoFactorAuth) {\n return <></>\n }\n return (\n <>\n {otpStep === 'VERIFICATION_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {TOTP_GUIDANCE_TEXT}\n </Typography>\n )}\n {otpStep === 'RECOVERY_CODE' && (\n <Typography variant={'body1'} sx={{ my: 2 }} align={'center'}>\n {RECOVERY_CODE_GUIDANCE_TEXT_SHORT}\n </Typography>\n )}\n <OneTimePasswordForm\n step={otpStep}\n onClickUseTOTP={() => {\n setOtpStep('VERIFICATION_CODE')\n }}\n onClickUseBackupCode={() => {\n setOtpStep('RECOVERY_CODE')\n }}\n loginIsPending={isPending}\n onSubmit={(code, otpType) =>\n handleChangePasswordWithOtp(newPassword, code, otpType)\n }\n hideReset2FA={options?.hideReset2FA}\n onClickPromptReset2FA={() => {\n setOtpStep('DISABLE_2FA_PROMPT')\n }}\n onClickReset2FA={() => {\n beginTwoFactorAuthReset(twoFactorAuthResetUri)\n }}\n twoFactorAuthResetIsPending={twoFactorAuthResetIsPending}\n twoFactorAuthResetIsSuccess={twoFactorAuthResetIsSuccess}\n />\n {(otpStep === 'RECOVERY_CODE' || otpStep === 'VERIFICATION_CODE') && (\n <Alert severity={'info'} sx={{ my: 2 }}>\n {TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT}\n </Alert>\n )}\n {otpStep === 'DISABLE_2FA_PROMPT' && twoFactorAuthResetIsSuccess && (\n <Alert severity={'warning'} sx={{ my: 2 }}>\n <strong>Your password has not been changed.</strong> To disable\n two-factor authentication, you may be required to enter your current\n password after clicking the link sent to your email address.\n </Alert>\n )}\n </>\n )\n }, [\n beginTwoFactorAuthReset,\n handleChangePasswordWithOtp,\n isPending,\n newPassword,\n options?.hideReset2FA,\n otpStep,\n promptForTwoFactorAuth,\n twoFactorAuthResetIsPending,\n twoFactorAuthResetIsSuccess,\n twoFactorAuthResetUri,\n ])\n\n return {\n successfullyChangedPassword,\n isPending,\n error,\n promptForTwoFactorAuth,\n TwoFactorAuthPrompt: TwoFactorAuthPrompt,\n handleChangePasswordWithCurrentPassword,\n handleChangePasswordWithResetToken,\n }\n}\n"],"names":["TWO_FACTOR_AUTH_CHANGE_PASSWORD_PROMPT","useChangePasswordFormState","options","defaultTwoFactorAuthResetUrl","useOneSageURL","twoFactorAuthResetUri","appendFinalQueryParamKey","currentPassword","setCurrentPassword","useState","newPassword","setNewPassword","twoFactorAuthErrorResponse","setTwoFactorAuthErrorResponse","otpStep","setOtpStep","successfullyChangedPassword","setSuccessfullyChangedPassword","changePassword","isPending","error","useChangePassword","maybeTwoFactorResponse","handleChangePasswordWithCurrentPassword","useCallback","username","handleChangePasswordWithResetToken","passwordChangeToken","handleChangePasswordWithOtp","code","otpType","changeRequest","promptForTwoFactorAuth","resetTwoFactorAuth","twoFactorAuthResetIsSuccess","twoFactorAuthResetIsPending","useResetTwoFactorAuth","beginTwoFactorAuthReset","twoFaResetEndpoint","request","TwoFactorAuthPrompt","jsxs","Fragment","jsx","Typography","TOTP_GUIDANCE_TEXT","RECOVERY_CODE_GUIDANCE_TEXT_SHORT","OneTimePasswordForm","Alert"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMA,IACX;AAWF,SAAwBC,GACtBC,GACA;AACA,QAAMC,IAA+BC,EAAc,WAAW,GACxDC,IAAwBC;AAAA,IAC5BH;AAAA,IACA;AAAA,EAAA,GAII,CAACI,GAAiBC,CAAkB,IAAIC,EAAiB,EAAE,GAC3D,CAACC,GAAaC,CAAc,IAAIF,EAAiB,EAAE,GACnD,CAACG,GAA4BC,CAA6B,IAAIJ,EAAA,GAG9D,CAACK,GAASC,CAAU,IACxBN,EAAiC,mBAAmB,GAChD,CAACO,GAA6BC,CAA8B,IAChER,EAAS,EAAK,GACV;AAAA,IACJ,QAAQS;AAAA,IACR,WAAAC;AAAA,IACA,OAAAC;AAAA,EAAA,IACEC,EAAkB;AAAA,IACpB,WAAW,CAAAC,MAA0B;AACnC,MAAIA,IAGFT,EAA8BS,CAAsB,KAEpDL,EAA+B,EAAI,GACnCJ,EAA8B,MAAS,GACnCX,GAAS,2BACXA,EAAQ,wBAAA;AAAA,IAGd;AAAA,EAAA,CACD,GAEKqB,IAA0CC;AAAA,IAC9C,CAACC,GAAkBlB,GAAyBG,MAAwB;AAClE,MAAAF,EAAmBD,CAAe,GAClCI,EAAeD,CAAW,GAQ1BQ,EAPyD;AAAA,QACvD,UAAAO;AAAA,QACA,iBAAAlB;AAAAA,QACA,aAAAG;AAAAA,QACA,cACE;AAAA,MAAA,CAEwB;AAAA,IAC9B;AAAA,IACA,CAACQ,CAAc;AAAA,EAAA,GAGXQ,IAAqCF;AAAA,IACzC,CAACd,GAAqBiB,MAAkD;AACtE,MAAAhB,EAAeD,CAAW,GAO1BQ,EANqD;AAAA,QACnD,aAAAR;AAAAA,QACA,cACE;AAAA,QACF,qBAAAiB;AAAA,MAAA,CAE0B;AAAA,IAC9B;AAAA,IACA,CAACT,CAAc;AAAA,EAAA,GAGXU,IAA8BJ;AAAA,IAClC,CAACd,GAAqBmB,GAAcC,MAAkC;AACpE,UAAIlB,GAA4B;AAC9B,cAAMmB,IAAsD;AAAA,UAC1D,aAAArB;AAAAA,UACA,cACE;AAAA,UACF,QAAQE,EAA2B;AAAA,UACnC,YAAYA,EAA2B;AAAA,UACvC,SAAAkB;AAAA,UACA,SAASD;AAAA,QAAA;AAEX,QAAAX,EAAea,CAAa;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,CAACb,GAAgBN,CAA0B;AAAA,EAAA,GAEvCoB,IAAyB,EAAQpB,GACjC;AAAA,IACJ,QAAQqB;AAAA,IACR,WAAWC;AAAA,IACX,WAAWC;AAAA,EAAA,IACTC,EAAA,GAEEC,IAA0Bb;AAAA,IAC9B,CAACc,MAA+B;AAC9B,UAAI1B,GAA4B;AAC9B,cAAM2B,IAAqC;AAAA,UACzC,QAAQ3B,EAA2B;AAAA,UACnC,oBAAA0B;AAAA;AAAA,UAEA,UAAU/B;AAAA,QAAA;AAEZ,QAAA0B,EAAmBM,CAAO;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,CAAChC,GAAiB0B,GAAoBrB,CAA0B;AAAA,EAAA,GAG5D4B,IAAsBhB,EAAY,MACjCQ,IAIH,gBAAAS,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA5B,MAAY,uBACX,gBAAA6B,EAACC,GAAA,EAAW,SAAS,SAAS,IAAI,EAAE,IAAI,EAAA,GAAK,OAAO,UACjD,UAAAC,GACH;AAAA,IAED/B,MAAY,mBACX,gBAAA6B,EAACC,GAAA,EAAW,SAAS,SAAS,IAAI,EAAE,IAAI,EAAA,GAAK,OAAO,UACjD,UAAAE,GACH;AAAA,IAEF,gBAAAH;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAMjC;AAAA,QACN,gBAAgB,MAAM;AACpB,UAAAC,EAAW,mBAAmB;AAAA,QAChC;AAAA,QACA,sBAAsB,MAAM;AAC1B,UAAAA,EAAW,eAAe;AAAA,QAC5B;AAAA,QACA,gBAAgBI;AAAA,QAChB,UAAU,CAACU,GAAMC,MACfF,EAA4BlB,GAAamB,GAAMC,CAAO;AAAA,QAExD,cAAc5B,GAAS;AAAA,QACvB,uBAAuB,MAAM;AAC3B,UAAAa,EAAW,oBAAoB;AAAA,QACjC;AAAA,QACA,iBAAiB,MAAM;AACrB,UAAAsB,EAAwBhC,CAAqB;AAAA,QAC/C;AAAA,QACA,6BAAA8B;AAAA,QACA,6BAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,KAEApB,MAAY,mBAAmBA,MAAY,wBAC3C,gBAAA6B,EAACK,GAAA,EAAM,UAAU,QAAQ,IAAI,EAAE,IAAI,EAAA,GAChC,UAAAhD,GACH;AAAA,IAEDc,MAAY,wBAAwBoB,KACnC,gBAAAO,EAACO,GAAA,EAAM,UAAU,WAAW,IAAI,EAAE,IAAI,EAAA,GACpC,UAAA;AAAA,MAAA,gBAAAL,EAAC,YAAO,UAAA,sCAAA,CAAmC;AAAA,MAAS;AAAA,IAAA,EAAA,CAGtD;AAAA,EAAA,GAEJ,IAhDO,gBAAAA,EAAAD,GAAA,EAAE,GAkDV;AAAA,IACDL;AAAA,IACAT;AAAA,IACAT;AAAA,IACAT;AAAA,IACAR,GAAS;AAAA,IACTY;AAAA,IACAkB;AAAA,IACAG;AAAA,IACAD;AAAA,IACA7B;AAAA,EAAA,CACD;AAED,SAAO;AAAA,IACL,6BAAAW;AAAA,IACA,WAAAG;AAAA,IACA,OAAAC;AAAA,IACA,wBAAAY;AAAA,IACA,qBAAAQ;AAAA,IACA,yCAAAjB;AAAA,IACA,oCAAAG;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import { SxProps
|
|
2
|
-
import { PropsWithChildren } from 'react';
|
|
1
|
+
import { SxProps } from '@mui/material';
|
|
2
|
+
import { PropsWithChildren, ReactNode } from 'react';
|
|
3
3
|
export type ComponentCollapseProps = PropsWithChildren<{
|
|
4
|
-
|
|
4
|
+
component: ReactNode;
|
|
5
5
|
defaultVisible?: boolean;
|
|
6
|
-
|
|
7
|
-
textSx?: SxProps;
|
|
8
|
-
textContainerSx?: SxProps;
|
|
6
|
+
componentContainerSx?: SxProps;
|
|
9
7
|
collapseBoxSx?: SxProps;
|
|
10
8
|
iconSx?: SxProps;
|
|
11
9
|
}>;
|
|
12
10
|
/**
|
|
13
|
-
* Wrap any
|
|
14
|
-
* @param props
|
|
15
|
-
* @returns
|
|
11
|
+
* Wrap any child components in a collapse, using a custom component as the trigger
|
|
16
12
|
*/
|
|
17
|
-
export default function ComponentCollapse({
|
|
13
|
+
export default function ComponentCollapse({ component, defaultVisible, componentContainerSx, collapseBoxSx, iconSx, children, }: ComponentCollapseProps): import("react/jsx-runtime").JSX.Element;
|
|
18
14
|
//# sourceMappingURL=ComponentCollapse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentCollapse.d.ts","sourceRoot":"","sources":["../../src/components/ComponentCollapse.tsx"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"ComponentCollapse.d.ts","sourceRoot":"","sources":["../../src/components/ComponentCollapse.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAEL,iBAAiB,EACjB,SAAS,EAGV,MAAM,OAAO,CAAA;AAEd,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACrD,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,MAAM,EACN,QAAQ,GACT,EAAE,sBAAsB,2CAsDxB"}
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { spreadSx as
|
|
3
|
-
import { KeyboardArrowUpTwoTone as
|
|
4
|
-
import { Box as
|
|
5
|
-
import { useState as
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
defaultVisible:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
iconSx: d,
|
|
14
|
-
children: m
|
|
1
|
+
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { spreadSx as s } from "../theme/spreadSx.js";
|
|
3
|
+
import { KeyboardArrowUpTwoTone as w, KeyboardArrowDownTwoTone as y } from "@mui/icons-material";
|
|
4
|
+
import { Box as i, Collapse as h } from "@mui/material";
|
|
5
|
+
import { useState as C, useId as b } from "react";
|
|
6
|
+
function j({
|
|
7
|
+
component: p,
|
|
8
|
+
defaultVisible: c,
|
|
9
|
+
componentContainerSx: d,
|
|
10
|
+
collapseBoxSx: x,
|
|
11
|
+
iconSx: m,
|
|
12
|
+
children: f
|
|
15
13
|
}) {
|
|
16
|
-
const [
|
|
14
|
+
const [o, r] = C(c), t = b(), a = {
|
|
17
15
|
color: "grey.700",
|
|
18
16
|
marginBottom: "-5px !important",
|
|
19
17
|
height: "18px",
|
|
20
|
-
...
|
|
21
|
-
},
|
|
18
|
+
...m
|
|
19
|
+
}, u = {
|
|
22
20
|
display: "flex",
|
|
21
|
+
textAlign: "left",
|
|
23
22
|
justifyContent: "space-between",
|
|
24
23
|
backgroundColor: "grey.200",
|
|
25
24
|
padding: "15px",
|
|
@@ -30,31 +29,28 @@ function B({
|
|
|
30
29
|
backgroundColor: "grey.100",
|
|
31
30
|
padding: "25px"
|
|
32
31
|
};
|
|
33
|
-
return /* @__PURE__ */
|
|
34
|
-
/* @__PURE__ */
|
|
35
|
-
|
|
32
|
+
return /* @__PURE__ */ l("div", { className: "MarkdownCollapse", children: [
|
|
33
|
+
/* @__PURE__ */ l(
|
|
34
|
+
i,
|
|
36
35
|
{
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
component: "button",
|
|
37
|
+
sx: s(u, d),
|
|
38
|
+
onClick: () => r(!o),
|
|
39
|
+
onKeyDown: (n) => {
|
|
40
|
+
(n.key === "Enter" || n.key === " ") && (n.preventDefault(), r(!o));
|
|
41
|
+
},
|
|
42
|
+
"aria-controls": t,
|
|
43
|
+
"aria-expanded": o,
|
|
39
44
|
children: [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
{
|
|
43
|
-
variant: i,
|
|
44
|
-
"aria-controls": "collapse-text",
|
|
45
|
-
"aria-expanded": r,
|
|
46
|
-
sx: p,
|
|
47
|
-
children: l
|
|
48
|
-
}
|
|
49
|
-
),
|
|
50
|
-
r ? /* @__PURE__ */ o(u, { sx: e }) : /* @__PURE__ */ o(w, { sx: e })
|
|
45
|
+
p,
|
|
46
|
+
o ? /* @__PURE__ */ e(w, { sx: a }) : /* @__PURE__ */ e(y, { sx: a })
|
|
51
47
|
]
|
|
52
48
|
}
|
|
53
49
|
),
|
|
54
|
-
/* @__PURE__ */
|
|
50
|
+
/* @__PURE__ */ e(h, { in: o, children: /* @__PURE__ */ e(i, { sx: s(g, x), children: /* @__PURE__ */ e("div", { id: t, children: f }) }) })
|
|
55
51
|
] });
|
|
56
52
|
}
|
|
57
53
|
export {
|
|
58
|
-
|
|
54
|
+
j as default
|
|
59
55
|
};
|
|
60
56
|
//# sourceMappingURL=ComponentCollapse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentCollapse.js","sources":["../../src/components/ComponentCollapse.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport {\n KeyboardArrowDownTwoTone,\n KeyboardArrowUpTwoTone,\n} from '@mui/icons-material'\nimport {
|
|
1
|
+
{"version":3,"file":"ComponentCollapse.js","sources":["../../src/components/ComponentCollapse.tsx"],"sourcesContent":["import { spreadSx } from '@/theme/spreadSx'\nimport {\n KeyboardArrowDownTwoTone,\n KeyboardArrowUpTwoTone,\n} from '@mui/icons-material'\nimport { Box, Collapse, SxProps } from '@mui/material'\nimport {\n KeyboardEvent,\n PropsWithChildren,\n ReactNode,\n useId,\n useState,\n} from 'react'\n\nexport type ComponentCollapseProps = PropsWithChildren<{\n component: ReactNode\n defaultVisible?: boolean // default to false (collapsed)\n componentContainerSx?: SxProps\n collapseBoxSx?: SxProps\n iconSx?: SxProps\n}>\n\n/**\n * Wrap any child components in a collapse, using a custom component as the trigger\n */\nexport default function ComponentCollapse({\n component,\n defaultVisible,\n componentContainerSx,\n collapseBoxSx,\n iconSx,\n children,\n}: ComponentCollapseProps) {\n const [show, setShow] = useState(defaultVisible)\n const collapseId = useId()\n const allIconSx: SxProps = {\n color: 'grey.700',\n marginBottom: '-5px !important',\n height: '18px',\n ...iconSx,\n }\n\n const componentContainerDefaultSx: SxProps = {\n display: 'flex',\n textAlign: 'left',\n justifyContent: 'space-between',\n backgroundColor: 'grey.200',\n padding: '15px',\n '&:hover': {\n cursor: 'pointer',\n },\n }\n const collapseBoxDefaultSx: SxProps = {\n backgroundColor: 'grey.100',\n padding: '25px',\n }\n\n return (\n <div className=\"MarkdownCollapse\">\n <Box\n component=\"button\"\n sx={spreadSx(componentContainerDefaultSx, componentContainerSx)}\n onClick={() => setShow(!show)}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setShow(!show)\n }\n }}\n aria-controls={collapseId}\n aria-expanded={show}\n >\n {component}\n {show ? (\n <KeyboardArrowUpTwoTone sx={allIconSx} />\n ) : (\n <KeyboardArrowDownTwoTone sx={allIconSx} />\n )}\n </Box>\n <Collapse in={show}>\n <Box sx={spreadSx(collapseBoxDefaultSx, collapseBoxSx)}>\n <div id={collapseId}>{children}</div>\n </Box>\n </Collapse>\n </div>\n )\n}\n"],"names":["ComponentCollapse","component","defaultVisible","componentContainerSx","collapseBoxSx","iconSx","children","show","setShow","useState","collapseId","useId","allIconSx","componentContainerDefaultSx","collapseBoxDefaultSx","jsxs","Box","spreadSx","e","KeyboardArrowUpTwoTone","jsx","KeyboardArrowDownTwoTone","Collapse"],"mappings":";;;;;AAyBA,SAAwBA,EAAkB;AAAA,EACxC,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AACF,GAA2B;AACzB,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAASP,CAAc,GACzCQ,IAAaC,EAAA,GACbC,IAAqB;AAAA,IACzB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,GAAGP;AAAA,EAAA,GAGCQ,IAAuC;AAAA,IAC3C,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,WAAW;AAAA,MACT,QAAQ;AAAA,IAAA;AAAA,EACV,GAEIC,IAAgC;AAAA,IACpC,iBAAiB;AAAA,IACjB,SAAS;AAAA,EAAA;AAGX,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,IAAA,gBAAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,IAAIC,EAASJ,GAA6BV,CAAoB;AAAA,QAC9D,SAAS,MAAMK,EAAQ,CAACD,CAAI;AAAA,QAC5B,WAAW,CAACW,MAAqB;AAC/B,WAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACFV,EAAQ,CAACD,CAAI;AAAA,QAEjB;AAAA,QACA,iBAAeG;AAAA,QACf,iBAAeH;AAAA,QAEd,UAAA;AAAA,UAAAN;AAAA,UACAM,sBACEY,GAAA,EAAuB,IAAIP,GAAW,IAEvC,gBAAAQ,EAACC,GAAA,EAAyB,IAAIT,EAAA,CAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,sBAG5CU,GAAA,EAAS,IAAIf,GACZ,UAAA,gBAAAa,EAACJ,KAAI,IAAIC,EAASH,GAAsBV,CAAa,GACnD,UAAA,gBAAAgB,EAAC,OAAA,EAAI,IAAIV,GAAa,UAAAJ,GAAS,GACjC,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -40,11 +40,14 @@ import "@mui/material/SvgIcon";
|
|
|
40
40
|
import "../../assets/icons/AccessPending.svg.js";
|
|
41
41
|
import "../../assets/icons/AccessPendingCloud.svg.js";
|
|
42
42
|
import "../../assets/icons/FileWithShield.svg.js";
|
|
43
|
+
import "../../assets/icons/MultiFile.svg.js";
|
|
44
|
+
import "../../assets/icons/UnpackagableFile.svg.js";
|
|
43
45
|
import "../../assets/icons/bioChemicalPhysical.svg.js";
|
|
44
46
|
import "../../assets/icons/computationalTool.svg.js";
|
|
45
47
|
import "../../assets/icons/dataReuse.svg.js";
|
|
46
48
|
import "../../assets/icons/inSilicoModel.svg.js";
|
|
47
49
|
import "../../assets/icons/modelSystem.svg.js";
|
|
50
|
+
import "../../assets/mui_components/PackagableFile.svg.js";
|
|
48
51
|
import "../../assets/icons/spatialProfiling.svg.js";
|
|
49
52
|
import "react-select";
|
|
50
53
|
import "@mui/material/Skeleton";
|
|
@@ -54,18 +57,18 @@ import "react-transition-group";
|
|
|
54
57
|
import { SetBasicAccessRequirementFields as F } from "../SetBasicAccessRequirementFields/SetBasicAccessRequirementFields.js";
|
|
55
58
|
import { SetManagedAccessRequirementFields as N } from "../SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js";
|
|
56
59
|
import { getDialogTitle as q, isLastStep as v } from "./CreateOrUpdateAccessRequirementWizardUtils.js";
|
|
57
|
-
function
|
|
58
|
-
const { open: E, onCancel: u, onComplete: n } = t, [o,
|
|
60
|
+
function he(t) {
|
|
61
|
+
const { open: E, onCancel: u, onComplete: n } = t, [o, p] = c(
|
|
59
62
|
"SET_AR_COMMON_FIELDS"
|
|
60
|
-
), [l, e] = c(!1), [r, R] = c(t.accessRequirementId),
|
|
63
|
+
), [l, e] = c(!1), [r, R] = c(t.accessRequirementId), a = s(null), S = s(null), A = s(null), _ = s(null), f = !!t.accessRequirementId, d = M(() => {
|
|
61
64
|
switch (o) {
|
|
62
65
|
case "SET_AR_COMMON_FIELDS":
|
|
63
66
|
return /* @__PURE__ */ m(
|
|
64
67
|
L,
|
|
65
68
|
{
|
|
66
|
-
ref:
|
|
69
|
+
ref: a,
|
|
67
70
|
onSave: (i, I) => {
|
|
68
|
-
R(i),
|
|
71
|
+
R(i), p(I === C ? "SET_MANAGED_AR_FIELDS" : "SET_BASIC_AR_FIELDS"), e(!1);
|
|
69
72
|
},
|
|
70
73
|
onError: () => e(!1),
|
|
71
74
|
subject: t.subject,
|
|
@@ -79,7 +82,7 @@ function Pe(t) {
|
|
|
79
82
|
ref: S,
|
|
80
83
|
accessRequirementId: r,
|
|
81
84
|
onSave: () => {
|
|
82
|
-
|
|
85
|
+
p("SET_MANAGED_AR_ACL_PERMISSIONS"), e(!1);
|
|
83
86
|
},
|
|
84
87
|
onError: () => {
|
|
85
88
|
e(!1);
|
|
@@ -125,7 +128,7 @@ function Pe(t) {
|
|
|
125
128
|
onConfirm: (i) => {
|
|
126
129
|
switch (i.preventDefault(), e(!0), o) {
|
|
127
130
|
case "SET_AR_COMMON_FIELDS":
|
|
128
|
-
|
|
131
|
+
a?.current?.save();
|
|
129
132
|
return;
|
|
130
133
|
case "SET_MANAGED_AR_FIELDS":
|
|
131
134
|
S?.current?.save();
|
|
@@ -148,7 +151,7 @@ function Pe(t) {
|
|
|
148
151
|
);
|
|
149
152
|
}
|
|
150
153
|
export {
|
|
151
|
-
|
|
152
|
-
|
|
154
|
+
he as CreateOrUpdateAccessRequirementWizard,
|
|
155
|
+
he as default
|
|
153
156
|
};
|
|
154
157
|
//# sourceMappingURL=CreateOrUpdateAccessRequirementWizard.js.map
|