synapse-react-client 4.0.2 → 4.0.4
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/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +4 -4
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +8 -7
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +4 -4
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js +11 -11
- package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js +9 -9
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js +5 -5
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.d.ts.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +36 -35
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.js +8 -8
- package/dist/components/AclEditor/AclEditor.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js +34 -34
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/AddToDownloadListV2.js +10 -10
- package/dist/components/AddToDownloadListV2.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +6 -5
- package/dist/components/Authentication/TwoFactorEnrollmentForm.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 +13 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +11 -11
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.css +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.d.ts.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +25 -25
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss +13 -5
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss.js +5 -5
- package/dist/components/CardContainer/CardLink.d.ts +12 -0
- package/dist/components/CardContainer/CardLink.d.ts.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/ChallengeSubmission/AvailableEvaluationQueueList.js +12 -12
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +7 -7
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +5 -2
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.d.ts.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js +13 -12
- package/dist/components/CitationPopover/CitationPopoverContent.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/CookiesNotification/CookiesNotification.js +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +12 -10
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +10 -5
- 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 +43 -38
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +10 -5
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js +9 -7
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.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/ActionRequiredCard/ActionRequiredCard.js +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/RequestDownloadCard.js +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 +10 -5
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/Ecosystem/TableQueryEcosystem.js +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
- package/dist/components/EntityAclEditor/OpenData.js +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +113 -127
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js +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 +4 -4
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityNameCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.d.ts.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +39 -39
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts +8 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts.map +1 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js +46 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -0
- package/dist/components/Evaluation/EvaluationCard.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationCard.js +35 -41
- package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.js +95 -90
- package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js +133 -124
- package/dist/components/Evaluation/EvaluationRoundEditor.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/FilePreview/EntityPreview.js +1 -1
- package/dist/components/Forum/DiscussionReply.js +10 -10
- package/dist/components/Forum/DiscussionThread.js +21 -21
- package/dist/components/FullWidthAlert/FullWidthAlert.d.ts +2 -2
- package/dist/components/FullWidthAlert/FullWidthAlert.js.map +1 -1
- package/dist/components/GenericCard/CardUtils.d.ts.map +1 -1
- package/dist/components/GenericCard/CardUtils.js +36 -36
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/CollapsibleDescription.js +25 -25
- 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 +95 -85
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +10 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +248 -209
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.d.ts.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.js +14 -15
- package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
- package/dist/components/GoogleAnalytics/GoogleAnalytics.js +1 -1
- package/dist/components/HasAccess/HasAccessV2.js +1 -1
- package/dist/components/HasAccess/useHasAccess.js +1 -1
- package/dist/components/HeaderCard.js +17 -13
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js +23 -23
- package/dist/components/IDUReport/IDUReportSubmissionInfo.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/JSONArrayEditor/useParseCsv.d.ts +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.d.ts.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js +9 -9
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js +7 -7
- package/dist/components/Markdown/MarkdownEditor.js +11 -11
- package/dist/components/Markdown/MarkdownGithub.js +1 -1
- package/dist/components/Markdown/MarkdownPopover.js +6 -6
- package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.js +139 -135
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.d.ts +8 -0
- package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js +139 -65
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js +18 -18
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownButton.js +3 -3
- package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.d.ts.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +9 -8
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.css +1 -0
- package/dist/components/Plot/SynapsePlot.d.ts +2 -0
- package/dist/components/Plot/SynapsePlot.d.ts.map +1 -1
- package/dist/components/Plot/SynapsePlot.js +43 -39
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.scss +8 -0
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +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 +137 -135
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
- package/dist/components/Resources/Resources.Desktop.js +7 -7
- package/dist/components/Resources/Resources.Mobile.js +6 -6
- package/dist/components/StorybookComponentWrapper.js +6 -3
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js +3 -3
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js +10 -10
- 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/SynapseForm/WarningDialog.d.ts +1 -0
- package/dist/components/SynapseForm/WarningDialog.d.ts.map +1 -1
- package/dist/components/SynapseForm/WarningDialog.js +18 -16
- package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +25 -25
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HasAccessChip.js +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +12 -13
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +5 -5
- package/dist/components/SynapseTable/ExpandableTableDataCell.d.ts.map +1 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js +3 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.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/SynapseTable.js +4 -4
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js +122 -122
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.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/SynapseTable/datasets/DatasetItemsEditor.js +5 -5
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
- package/dist/components/TableFeedCards/TableFeedCards.js +9 -9
- package/dist/components/TermsAndConditions/TermsAndConditionsItem.js +10 -10
- 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/TimelinePlot/TimelinePlotSpeciesSelector.js +9 -9
- package/dist/components/UserSearchBox/UserSearchBox.d.ts +23 -0
- package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -0
- package/dist/components/UserSearchBox/UserSearchBox.js +146 -0
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -0
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js +13 -13
- package/dist/components/WizardChoiceButton/WizardChoiceButton.js +3 -3
- package/dist/components/dataaccess/AccessHistoryDashboard.js +5 -5
- package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +5 -5
- package/dist/components/dataaccess/UseAccessRequirementTable.js +3 -3
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +10 -5
- 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/entity/metadata/EntityModal.js +1 -1
- package/dist/components/entity/metadata/MetadataTable.js +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +1 -1
- package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +27 -26
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/index.js +125 -121
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/InfiniteTableLayout.js +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/styled/HoverPopover.css +1 -0
- package/dist/components/styled/HoverPopover.d.ts +28 -0
- package/dist/components/styled/HoverPopover.d.ts.map +1 -0
- package/dist/components/styled/HoverPopover.js +103 -0
- package/dist/components/styled/HoverPopover.js.map +1 -0
- package/dist/components/styled/HoverPopover.module.scss +9 -0
- package/dist/components/styled/HoverPopover.module.scss.js +10 -0
- package/dist/components/styled/HoverPopover.module.scss.js.map +1 -0
- package/dist/components/styled/index.d.ts +2 -0
- package/dist/components/styled/index.d.ts.map +1 -1
- package/dist/components/styled/index.js +11 -9
- package/dist/components/styled/index.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +10 -5
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +10 -5
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/widgets/Range.js +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -32
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js +69 -68
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js +24 -21
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js +3 -3
- package/dist/features/curator/GridPage/GridPage.js +10 -5
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +10 -5
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/index.js +155 -151
- package/dist/index.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementHandlers.js +5 -5
- package/dist/mocks/msw/handlers/projectStorageHandlers.js +5 -5
- package/dist/mocks/msw/handlers/wikiHandlers.js +1 -1
- package/dist/mocks/msw/handlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers.js +67 -59
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/style/base/_core.scss +0 -1
- package/dist/style/components/_all.scss +0 -2
- package/dist/style/components/_cards.scss +22 -0
- package/dist/style/components/_download-list-v2.scss +1 -1
- package/dist/style/components/_entity-badge.scss +0 -2
- package/dist/style/components/_expandable_table_data.scss +3 -3
- package/dist/style/components/_query-wrapper-plot-nav.scss +13 -0
- package/dist/style/components/facet_nav/_facet-nav-panel.scss +3 -0
- package/dist/style/components/facet_nav/_facet-nav.scss +4 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/SynapseClient.js +118 -118
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/auth/useOIDC.js +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js +1 -1
- package/dist/synapse-queries/entity/index.js +6 -6
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
- package/dist/synapse-queries/index.js +1 -1
- package/dist/synapse-queries/user/usePersonalAccessToken.js +1 -1
- package/dist/testutils/vitest.setup.js +10 -11
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/theme/DefaultTheme.js +1 -1
- package/dist/theme/ThemeProvider.d.ts +2 -1
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.js +11 -10
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/mergeTheme.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/AppUtils.js +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/SanitizeHtmlUtils.d.ts.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js +34 -40
- package/dist/utils/functions/SanitizeHtmlUtils.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/dist/utils/functions/deepLinkingUtils.js +10 -10
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/hooks/index.js +6 -6
- package/dist/utils/hooks/useDetectSSOCode.js +3 -3
- package/dist/utils/hooks/useGetEntityMetadata.js +1 -1
- package/dist/utils/hooks/useNativeSearchParams.d.ts.map +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
- package/dist/utils/hooks/useOneSageURL.d.ts.map +1 -1
- package/dist/utils/hooks/useOneSageURL.js +15 -15
- package/dist/utils/hooks/useOneSageURL.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.d.ts +1 -0
- package/dist/utils/hooks/useSourceAppConfigs.d.ts.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js +79 -77
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/index.js +4 -4
- package/package.json +15 -16
- package/dist/_virtual/index.js +0 -6
- package/dist/_virtual/index.js.map +0 -1
- package/dist/_virtual/index2.js +0 -5
- package/dist/_virtual/index2.js.map +0 -1
- package/dist/_virtual/index3.js +0 -5
- package/dist/_virtual/index3.js.map +0 -1
- package/dist/_virtual/index4.js +0 -5
- package/dist/_virtual/index4.js.map +0 -1
- package/dist/_virtual/index5.js +0 -5
- package/dist/_virtual/index5.js.map +0 -1
- 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/components/UserSearchBox/UserSearchBoxV2.d.ts +0 -21
- package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts.map +0 -1
- package/dist/components/UserSearchBox/UserSearchBoxV2.js +0 -144
- package/dist/components/UserSearchBox/UserSearchBoxV2.js.map +0 -1
- package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js +0 -53
- package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js.map +0 -1
- package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js +0 -948
- package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js.map +0 -1
- package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +0 -30
- package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js.map +0 -1
- package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js +0 -15
- package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js.map +0 -1
- package/dist/style/components/_download-cart-page.scss +0 -204
- package/dist/style/components/_user-search-box.scss +0 -30
|
@@ -33,7 +33,7 @@ import "../../utils/types/IsType.js";
|
|
|
33
33
|
import { useGetCurrentUserBundle as F } from "../../synapse-queries/user/useUserBundle.js";
|
|
34
34
|
import p from "@mui/material/Grid";
|
|
35
35
|
import B from "../UserOrTeamBadge/UserOrTeamBadge.js";
|
|
36
|
-
import L from "../UserSearchBox/
|
|
36
|
+
import L from "../UserSearchBox/UserSearchBox.js";
|
|
37
37
|
import { AccessApprovalsTable as _ } from "./AccessApprovalsTable.js";
|
|
38
38
|
import { AccessRequestSubmissionTable as D } from "./AccessRequestSubmissionTable.js";
|
|
39
39
|
import z from "./AccessRequirementSearchBox/AccessRequirementSearchBox.js";
|
|
@@ -44,12 +44,12 @@ const G = () => /* @__PURE__ */ t("div", { className: "text-center", children: [
|
|
|
44
44
|
const [a, l] = c(), [r, n] = c(""), [f, S] = c({
|
|
45
45
|
accessorId: r,
|
|
46
46
|
accessRequirementId: a
|
|
47
|
-
}), [b,
|
|
47
|
+
}), [b, v] = c({
|
|
48
48
|
showStatus: !0,
|
|
49
49
|
showSubmitter: !0,
|
|
50
50
|
accessorId: r,
|
|
51
51
|
accessRequirementId: a
|
|
52
|
-
}), { data:
|
|
52
|
+
}), { data: g } = F(), I = g?.isACTMember, o = E(), h = w(), P = 500, A = q((i) => {
|
|
53
53
|
n(i || "");
|
|
54
54
|
}, []);
|
|
55
55
|
return C(() => {
|
|
@@ -81,7 +81,7 @@ const G = () => /* @__PURE__ */ t("div", { className: "text-center", children: [
|
|
|
81
81
|
})(a, r), S({
|
|
82
82
|
accessorId: r,
|
|
83
83
|
accessRequirementId: a
|
|
84
|
-
}),
|
|
84
|
+
}), v({
|
|
85
85
|
showStatus: !0,
|
|
86
86
|
showSubmitter: !0,
|
|
87
87
|
accessorId: r,
|
|
@@ -107,7 +107,7 @@ const G = () => /* @__PURE__ */ t("div", { className: "text-center", children: [
|
|
|
107
107
|
{
|
|
108
108
|
inputId: "user-filter",
|
|
109
109
|
onChange: A,
|
|
110
|
-
|
|
110
|
+
value: r,
|
|
111
111
|
placeholder: "Search for a user name",
|
|
112
112
|
typeFilter: y.USERS_ONLY
|
|
113
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessHistoryDashboard.js","sources":["../../../src/components/dataaccess/AccessHistoryDashboard.tsx"],"sourcesContent":["import React from 'react'\nimport SearchImage from '@/assets/icons/SearchImage'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useDebouncedEffect } from '@/utils/hooks/useDebouncedEffect'\nimport { Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport UserOrTeamBadge from '../UserOrTeamBadge/UserOrTeamBadge'\nimport
|
|
1
|
+
{"version":3,"file":"AccessHistoryDashboard.js","sources":["../../../src/components/dataaccess/AccessHistoryDashboard.tsx"],"sourcesContent":["import React from 'react'\nimport SearchImage from '@/assets/icons/SearchImage'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useDebouncedEffect } from '@/utils/hooks/useDebouncedEffect'\nimport { Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport UserOrTeamBadge from '../UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '../UserSearchBox/UserSearchBox'\nimport {\n AccessApprovalsTable,\n AccessApprovalsTableProps,\n} from './AccessApprovalsTable'\nimport {\n AccessRequestSubmissionTable,\n AccessRequestSubmissionTableProps,\n} from './AccessRequestSubmissionTable'\nimport AccessRequirementSearchBox from './AccessRequirementSearchBox/AccessRequirementSearchBox'\n\nconst SearchStartComponent = (): React.ReactNode => {\n return (\n <div className=\"text-center\">\n <SearchImage className=\"SearchPlaceholderImage\" height=\"167px\" />\n <Typography variant=\"body1Italic\">\n Select a user using the search field above to view their data access\n history\n </Typography>\n </div>\n )\n}\n\nexport const UserHistoryDashboard = (): React.ReactNode => {\n const [accessRequirementId, setAccessRequirementId] = useState<\n string | undefined\n >()\n const [accessorId, setAccessorId] = useState<string>('')\n const [approvalTableProps, setApprovalTableProps] =\n useState<AccessApprovalsTableProps>({\n accessorId,\n accessRequirementId,\n })\n const [submissionTableProps, setSubmissionTableProps] =\n useState<AccessRequestSubmissionTableProps>({\n showStatus: true,\n showSubmitter: true,\n accessorId,\n accessRequirementId,\n })\n\n const { data: userBundle } = useGetCurrentUserBundle()\n const hasActPermissions = userBundle?.isACTMember\n\n const location = useLocation()\n const navigate = useNavigate()\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const onAccessorChange = useCallback((selected: string | null) => {\n if (selected) {\n setAccessorId(selected)\n } else {\n setAccessorId('')\n }\n }, [])\n\n useEffect(() => {\n const initializeFromSearchParam = () => {\n const initialParams = new URLSearchParams(location.search)\n setAccessRequirementId(\n initialParams.get('accessRequirementId') ?? undefined,\n )\n setAccessorId(initialParams.get('accessorId') ?? '')\n }\n initializeFromSearchParam()\n }, [location.search])\n\n useDebouncedEffect(\n () => {\n const updateQueryParams = (\n accessRequirementId: string | undefined,\n accessorId: string,\n ) => {\n const params = new URLSearchParams(\n omitBy(\n {\n accessRequirementId,\n accessorId,\n },\n item => item === undefined || item === '',\n ) as Record<string, string>,\n )\n navigate(\n {\n pathname: location.pathname,\n search: params.toString(),\n },\n { replace: true },\n )\n }\n\n updateQueryParams(accessRequirementId, accessorId)\n setApprovalTableProps({\n accessorId,\n accessRequirementId,\n })\n setSubmissionTableProps({\n showStatus: true,\n showSubmitter: true,\n accessorId,\n accessRequirementId,\n })\n },\n [accessRequirementId, accessorId, navigate, location.pathname],\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n\n return (\n <div className=\"UserHistoryDashboard\">\n <Grid container spacing={2} className=\"InputPanel\">\n <Grid size={{ xs: 12, md: 6 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"user-filter\"\n >\n Select a user to view their access history\n </Typography>\n <UserSearchBox\n inputId=\"user-filter\"\n onChange={onAccessorChange}\n value={accessorId}\n placeholder=\"Search for a user name\"\n typeFilter={TYPE_FILTER.USERS_ONLY}\n />\n </Grid>\n\n {accessorId && (\n <Grid size={{ xs: 12, md: 6 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"arName-filter\"\n >\n Filter by Access Requirement Name\n </Typography>\n <AccessRequirementSearchBox\n inputId=\"arName-filter\"\n placeholder=\"Search for an Access Requirement Name \"\n onChange={setAccessRequirementId}\n />\n </Grid>\n )}\n </Grid>\n\n {accessorId ? (\n <>\n <Typography variant=\"headline3\">\n Submissions including <UserOrTeamBadge principalId={accessorId} />\n </Typography>\n <AccessRequestSubmissionTable {...submissionTableProps} />\n {hasActPermissions && (\n <>\n <Typography variant=\"headline3\">\n Status in Access Requirements\n </Typography>\n <AccessApprovalsTable {...approvalTableProps} />\n </>\n )}\n </>\n ) : (\n <SearchStartComponent />\n )}\n </div>\n )\n}\n"],"names":["SearchStartComponent","jsxs","jsx","SearchImage","Typography","UserHistoryDashboard","accessRequirementId","setAccessRequirementId","useState","accessorId","setAccessorId","approvalTableProps","setApprovalTableProps","submissionTableProps","setSubmissionTableProps","userBundle","useGetCurrentUserBundle","hasActPermissions","location","useLocation","navigate","useNavigate","INPUT_CHANGE_DEBOUNCE_DELAY_MS","onAccessorChange","useCallback","selected","useEffect","initialParams","useDebouncedEffect","params","omitBy","item","Grid","UserSearchBox","TYPE_FILTER","AccessRequirementSearchBox","Fragment","UserOrTeamBadge","AccessRequestSubmissionTable","AccessApprovalsTable"],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@ import { useMemo as R, useState as I, useEffect as Y, useCallback as q } from "r
|
|
|
10
10
|
import { useLocation as L, useNavigate as B } from "react-router";
|
|
11
11
|
import { EntityFinderModal as H } from "../EntityFinder/EntityFinderModal.js";
|
|
12
12
|
import { FinderScope as G } from "../EntityFinder/tree/EntityTree.js";
|
|
13
|
-
import
|
|
14
|
-
import { AccessRequirementTable as
|
|
13
|
+
import z from "../UserSearchBox/UserSearchBox.js";
|
|
14
|
+
import { AccessRequirementTable as K } from "./AccessRequirementTable.js";
|
|
15
15
|
const S = "nameOrID", C = "relatedProjectId", y = "reviewerId", D = "type";
|
|
16
16
|
function se(N) {
|
|
17
17
|
const { onCreateNewAccessRequirementClicked: P } = N, o = L(), i = R(
|
|
@@ -158,7 +158,7 @@ function se(N) {
|
|
|
158
158
|
}
|
|
159
159
|
),
|
|
160
160
|
/* @__PURE__ */ t(
|
|
161
|
-
|
|
161
|
+
z,
|
|
162
162
|
{
|
|
163
163
|
inputId: "reviewer-filter",
|
|
164
164
|
placeholder: "Search for a username or team name",
|
|
@@ -169,7 +169,7 @@ function se(N) {
|
|
|
169
169
|
] })
|
|
170
170
|
] }),
|
|
171
171
|
/* @__PURE__ */ t(
|
|
172
|
-
|
|
172
|
+
K,
|
|
173
173
|
{
|
|
174
174
|
nameOrID: l,
|
|
175
175
|
relatedProjectId: r,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementDashboard.js","sources":["../../../src/components/dataaccess/AccessRequirementDashboard.tsx"],"sourcesContent":["import { InputSizedButton } from '@/components/styled/InputSizedButton'\nimport { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { Grid, InputAdornment, TextField, Typography } from '@mui/material'\nimport { useDebouncedState } from '@react-hookz/web'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport { EntityFinderModal } from '../EntityFinder/EntityFinderModal'\nimport { FinderScope } from '../EntityFinder/tree/EntityTree'\nimport UserSearchBoxV2 from '../UserSearchBox/UserSearchBoxV2'\nimport { AccessRequirementTable } from './AccessRequirementTable'\n\nexport const AR_NAME_OR_ID_SEARCH_PARAM_KEY = 'nameOrID'\nexport const RELATED_PROJECT_ID_SEARCH_PARAM_KEY = 'relatedProjectId'\nexport const REVIEWER_ID_SEARCH_PARAM_KEY = 'reviewerId'\nexport const AR_TYPE_SEARCH_PARAM_KEY = 'type'\n\nexport type AccessRequirementDashboardProps = {\n onCreateNewAccessRequirementClicked?: () => void\n}\n\nexport function AccessRequirementDashboard(\n props: AccessRequirementDashboardProps,\n) {\n // Amount of time to wait after an input value changes before sending a new request\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const { onCreateNewAccessRequirementClicked } = props\n\n const location = useLocation()\n const urlSearchParams = useMemo(\n () => new URLSearchParams(location.search),\n [location.search],\n )\n const navigate = useNavigate()\n\n /**\n * When an input changes, update the props passed to the table and update the search params.\n *\n * Debounced to prevent firing many queries while the user is entering text.\n */\n const [nameOrID, setNameOrID] = useDebouncedState<string>(\n urlSearchParams.get(AR_NAME_OR_ID_SEARCH_PARAM_KEY) ?? '',\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [relatedProjectId, setRelatedProjectId] = useDebouncedState<\n string | undefined\n >(\n urlSearchParams.get(RELATED_PROJECT_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [reviewerId, setReviewerId] = useDebouncedState<string | undefined>(\n urlSearchParams.get(REVIEWER_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [typeFilter, setTypeFilter] = useState<string | undefined>(\n urlSearchParams.get(AR_TYPE_SEARCH_PARAM_KEY) ?? undefined,\n )\n\n const projectFilterFieldIsError: boolean = useMemo(\n () =>\n !!(relatedProjectId && !SYNAPSE_ENTITY_ID_REGEX.exec(relatedProjectId)),\n [relatedProjectId],\n )\n\n const [showEntityFinder, setShowEntityFinder] = useState(false)\n\n // Update the QueryParams when the filter state changes\n useEffect(() => {\n // Don't include undefined/empty parameters\n const params = omitBy(\n {\n // Sync the search params state with the debounced props\n [AR_NAME_OR_ID_SEARCH_PARAM_KEY]: nameOrID,\n [RELATED_PROJECT_ID_SEARCH_PARAM_KEY]: relatedProjectId,\n [REVIEWER_ID_SEARCH_PARAM_KEY]: reviewerId,\n [AR_TYPE_SEARCH_PARAM_KEY]: typeFilter, // typeFilter state is not debounced\n },\n item => item === undefined || item === '',\n ) as Record<string, string>\n\n // Add the new params to the URL\n // Replace history because intuitively, the user has not navigated to a new page\n const paramsObject = new URLSearchParams(params)\n navigate(\n {\n pathname: location.pathname,\n search: paramsObject.toString(),\n },\n { replace: true },\n )\n }, [\n nameOrID,\n relatedProjectId,\n reviewerId,\n typeFilter,\n navigate,\n location.pathname,\n ])\n\n const onReviewerChange = useCallback(\n (selected: string | null) => {\n if (selected) {\n setReviewerId(selected)\n } else {\n setReviewerId(undefined)\n }\n },\n [setReviewerId],\n )\n\n return (\n <div className=\"AccessRequirementDashboard\">\n <EntityFinderModal\n configuration={{\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: null,\n selectMultiple: false,\n selectableTypes: [EntityType.project],\n treeOnly: true,\n }}\n show={showEntityFinder}\n onCancel={() => {\n setShowEntityFinder(false)\n }}\n title={'Select Project to Filter Access Requirements'}\n promptCopy={\n 'Select a project to find Access Requirements that are associated with that project. Access Requirements will be found if the Access Requirement is applied to the project, or if it is applied to any item inside the project.'\n }\n onConfirm={selected => {\n setRelatedProjectId(selected[0].targetId)\n setShowEntityFinder(false)\n }}\n confirmButtonCopy={'Select'}\n />\n <Grid component={'form'} container spacing={2} className=\"InputPanel\">\n <Grid size={{ xs: 12, md: 4 }}>\n <TextField\n label=\"Filter by Access Requirement Name or ID\"\n id=\"ar-name-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Search for an Access Requirement Name or ID\"\n onChange={e => {\n setNameOrID(e.target.value)\n }}\n slotProps={{\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <SearchOutlined />\n </InputAdornment>\n ),\n },\n }}\n />\n </Grid>\n <Grid\n size={{ xs: 12, md: 4 }}\n sx={{\n display: 'flex',\n gap: '5px',\n alignItems: 'stretch',\n }}\n >\n <TextField\n label=\"Filter by Project\"\n id=\"project-id-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Enter a project SynID\"\n error={projectFilterFieldIsError}\n helperText={\n projectFilterFieldIsError\n ? 'Value must be a Synapse ID, e.g. \"syn1234\"'\n : undefined\n }\n onChange={e => {\n const newValue = e.target.value\n if (newValue === '') {\n setRelatedProjectId(undefined)\n } else {\n setRelatedProjectId(newValue)\n }\n }}\n />\n <InputSizedButton\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => {\n setShowEntityFinder(true)\n }}\n >\n Browse\n </InputSizedButton>\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"reviewer-filter\"\n >\n Filter by Reviewer\n </Typography>\n <UserSearchBoxV2\n inputId=\"reviewer-filter\"\n placeholder=\"Search for a username or team name\"\n defaultValue={reviewerId}\n onChange={onReviewerChange}\n />\n </Grid>\n </Grid>\n <AccessRequirementTable\n nameOrID={nameOrID}\n relatedProjectId={relatedProjectId}\n reviewerId={reviewerId}\n onCreateNewAccessRequirementClicked={\n onCreateNewAccessRequirementClicked\n }\n typeFilter={typeFilter}\n onTypeFilterChange={setTypeFilter}\n />\n </div>\n )\n}\n\nexport default AccessRequirementDashboard\n"],"names":["AR_NAME_OR_ID_SEARCH_PARAM_KEY","RELATED_PROJECT_ID_SEARCH_PARAM_KEY","REVIEWER_ID_SEARCH_PARAM_KEY","AR_TYPE_SEARCH_PARAM_KEY","AccessRequirementDashboard","props","onCreateNewAccessRequirementClicked","location","useLocation","urlSearchParams","useMemo","navigate","useNavigate","nameOrID","setNameOrID","useDebouncedState","relatedProjectId","setRelatedProjectId","reviewerId","setReviewerId","typeFilter","setTypeFilter","useState","projectFilterFieldIsError","SYNAPSE_ENTITY_ID_REGEX","showEntityFinder","setShowEntityFinder","useEffect","params","omitBy","item","paramsObject","onReviewerChange","useCallback","selected","jsxs","jsx","EntityFinderModal","FinderScope","EntityType","Grid","TextField","InputAdornment","SearchOutlined","newValue","InputSizedButton","Typography","UserSearchBoxV2","AccessRequirementTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccessRequirementDashboard.js","sources":["../../../src/components/dataaccess/AccessRequirementDashboard.tsx"],"sourcesContent":["import { InputSizedButton } from '@/components/styled/InputSizedButton'\nimport { SYNAPSE_ENTITY_ID_REGEX } from '@/utils/functions/RegularExpressions'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { Grid, InputAdornment, TextField, Typography } from '@mui/material'\nimport { useDebouncedState } from '@react-hookz/web'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport { EntityFinderModal } from '../EntityFinder/EntityFinderModal'\nimport { FinderScope } from '../EntityFinder/tree/EntityTree'\nimport UserSearchBox from '../UserSearchBox/UserSearchBox'\nimport { AccessRequirementTable } from './AccessRequirementTable'\n\nexport const AR_NAME_OR_ID_SEARCH_PARAM_KEY = 'nameOrID'\nexport const RELATED_PROJECT_ID_SEARCH_PARAM_KEY = 'relatedProjectId'\nexport const REVIEWER_ID_SEARCH_PARAM_KEY = 'reviewerId'\nexport const AR_TYPE_SEARCH_PARAM_KEY = 'type'\n\nexport type AccessRequirementDashboardProps = {\n onCreateNewAccessRequirementClicked?: () => void\n}\n\nexport function AccessRequirementDashboard(\n props: AccessRequirementDashboardProps,\n) {\n // Amount of time to wait after an input value changes before sending a new request\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const { onCreateNewAccessRequirementClicked } = props\n\n const location = useLocation()\n const urlSearchParams = useMemo(\n () => new URLSearchParams(location.search),\n [location.search],\n )\n const navigate = useNavigate()\n\n /**\n * When an input changes, update the props passed to the table and update the search params.\n *\n * Debounced to prevent firing many queries while the user is entering text.\n */\n const [nameOrID, setNameOrID] = useDebouncedState<string>(\n urlSearchParams.get(AR_NAME_OR_ID_SEARCH_PARAM_KEY) ?? '',\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [relatedProjectId, setRelatedProjectId] = useDebouncedState<\n string | undefined\n >(\n urlSearchParams.get(RELATED_PROJECT_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [reviewerId, setReviewerId] = useDebouncedState<string | undefined>(\n urlSearchParams.get(REVIEWER_ID_SEARCH_PARAM_KEY) ?? undefined,\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n const [typeFilter, setTypeFilter] = useState<string | undefined>(\n urlSearchParams.get(AR_TYPE_SEARCH_PARAM_KEY) ?? undefined,\n )\n\n const projectFilterFieldIsError: boolean = useMemo(\n () =>\n !!(relatedProjectId && !SYNAPSE_ENTITY_ID_REGEX.exec(relatedProjectId)),\n [relatedProjectId],\n )\n\n const [showEntityFinder, setShowEntityFinder] = useState(false)\n\n // Update the QueryParams when the filter state changes\n useEffect(() => {\n // Don't include undefined/empty parameters\n const params = omitBy(\n {\n // Sync the search params state with the debounced props\n [AR_NAME_OR_ID_SEARCH_PARAM_KEY]: nameOrID,\n [RELATED_PROJECT_ID_SEARCH_PARAM_KEY]: relatedProjectId,\n [REVIEWER_ID_SEARCH_PARAM_KEY]: reviewerId,\n [AR_TYPE_SEARCH_PARAM_KEY]: typeFilter, // typeFilter state is not debounced\n },\n item => item === undefined || item === '',\n ) as Record<string, string>\n\n // Add the new params to the URL\n // Replace history because intuitively, the user has not navigated to a new page\n const paramsObject = new URLSearchParams(params)\n navigate(\n {\n pathname: location.pathname,\n search: paramsObject.toString(),\n },\n { replace: true },\n )\n }, [\n nameOrID,\n relatedProjectId,\n reviewerId,\n typeFilter,\n navigate,\n location.pathname,\n ])\n\n const onReviewerChange = useCallback(\n (selected: string | null) => {\n if (selected) {\n setReviewerId(selected)\n } else {\n setReviewerId(undefined)\n }\n },\n [setReviewerId],\n )\n\n return (\n <div className=\"AccessRequirementDashboard\">\n <EntityFinderModal\n configuration={{\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: null,\n selectMultiple: false,\n selectableTypes: [EntityType.project],\n treeOnly: true,\n }}\n show={showEntityFinder}\n onCancel={() => {\n setShowEntityFinder(false)\n }}\n title={'Select Project to Filter Access Requirements'}\n promptCopy={\n 'Select a project to find Access Requirements that are associated with that project. Access Requirements will be found if the Access Requirement is applied to the project, or if it is applied to any item inside the project.'\n }\n onConfirm={selected => {\n setRelatedProjectId(selected[0].targetId)\n setShowEntityFinder(false)\n }}\n confirmButtonCopy={'Select'}\n />\n <Grid component={'form'} container spacing={2} className=\"InputPanel\">\n <Grid size={{ xs: 12, md: 4 }}>\n <TextField\n label=\"Filter by Access Requirement Name or ID\"\n id=\"ar-name-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Search for an Access Requirement Name or ID\"\n onChange={e => {\n setNameOrID(e.target.value)\n }}\n slotProps={{\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <SearchOutlined />\n </InputAdornment>\n ),\n },\n }}\n />\n </Grid>\n <Grid\n size={{ xs: 12, md: 4 }}\n sx={{\n display: 'flex',\n gap: '5px',\n alignItems: 'stretch',\n }}\n >\n <TextField\n label=\"Filter by Project\"\n id=\"project-id-filter\"\n type=\"text\"\n fullWidth\n placeholder=\"Enter a project SynID\"\n error={projectFilterFieldIsError}\n helperText={\n projectFilterFieldIsError\n ? 'Value must be a Synapse ID, e.g. \"syn1234\"'\n : undefined\n }\n onChange={e => {\n const newValue = e.target.value\n if (newValue === '') {\n setRelatedProjectId(undefined)\n } else {\n setRelatedProjectId(newValue)\n }\n }}\n />\n <InputSizedButton\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => {\n setShowEntityFinder(true)\n }}\n >\n Browse\n </InputSizedButton>\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"reviewer-filter\"\n >\n Filter by Reviewer\n </Typography>\n <UserSearchBox\n inputId=\"reviewer-filter\"\n placeholder=\"Search for a username or team name\"\n defaultValue={reviewerId}\n onChange={onReviewerChange}\n />\n </Grid>\n </Grid>\n <AccessRequirementTable\n nameOrID={nameOrID}\n relatedProjectId={relatedProjectId}\n reviewerId={reviewerId}\n onCreateNewAccessRequirementClicked={\n onCreateNewAccessRequirementClicked\n }\n typeFilter={typeFilter}\n onTypeFilterChange={setTypeFilter}\n />\n </div>\n )\n}\n\nexport default AccessRequirementDashboard\n"],"names":["AR_NAME_OR_ID_SEARCH_PARAM_KEY","RELATED_PROJECT_ID_SEARCH_PARAM_KEY","REVIEWER_ID_SEARCH_PARAM_KEY","AR_TYPE_SEARCH_PARAM_KEY","AccessRequirementDashboard","props","onCreateNewAccessRequirementClicked","location","useLocation","urlSearchParams","useMemo","navigate","useNavigate","nameOrID","setNameOrID","useDebouncedState","relatedProjectId","setRelatedProjectId","reviewerId","setReviewerId","typeFilter","setTypeFilter","useState","projectFilterFieldIsError","SYNAPSE_ENTITY_ID_REGEX","showEntityFinder","setShowEntityFinder","useEffect","params","omitBy","item","paramsObject","onReviewerChange","useCallback","selected","jsxs","jsx","EntityFinderModal","FinderScope","EntityType","Grid","TextField","InputAdornment","SearchOutlined","newValue","InputSizedButton","Typography","UserSearchBox","AccessRequirementTable"],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ import { useLocation as Y, useNavigate as O } from "react-router";
|
|
|
30
30
|
import "@sage-bionetworks/synapse-client";
|
|
31
31
|
import "../../utils/types/IsType.js";
|
|
32
32
|
import { useIsCurrentUserACTMember as V } from "../../synapse-queries/user/useUserBundle.js";
|
|
33
|
-
import w from "../UserSearchBox/
|
|
33
|
+
import w from "../UserSearchBox/UserSearchBox.js";
|
|
34
34
|
import { AccessRequestSubmissionTable as j } from "./AccessRequestSubmissionTable.js";
|
|
35
35
|
import k from "./AccessRequirementSearchBox/AccessRequirementSearchBox.js";
|
|
36
36
|
const G = (r) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessSubmissionDashboard.js","sources":["../../../src/components/dataaccess/AccessSubmissionDashboard.tsx"],"sourcesContent":["import React from 'react'\nimport { useIsCurrentUserACTMember } from '@/synapse-queries/index'\nimport { useDebouncedEffect } from '@/utils/hooks/useDebouncedEffect'\nimport { ACT_TEAM_ID } from '@/utils/SynapseConstants'\nimport {\n Checkbox,\n FormControlLabel,\n Grid,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n SubmissionReviewerFilterType,\n SubmissionState,\n TYPE_FILTER,\n} from '@sage-bionetworks/synapse-types'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport UserSearchBoxV2 from '../UserSearchBox/UserSearchBoxV2'\nimport {\n AccessRequestSubmissionTable,\n AccessRequestSubmissionTableProps,\n} from './AccessRequestSubmissionTable'\nimport AccessRequirementSearchBox from './AccessRequirementSearchBox/AccessRequirementSearchBox'\n\nexport const getReviewerFilterID = (selected: string | null) => {\n if (selected && selected !== ACT_TEAM_ID.toString()) {\n return selected\n } else {\n return undefined\n }\n}\n\nexport const DataAccessSubmissionDashboard = (): React.ReactNode => {\n const [accessRequirementId, setAccessRequirementId] = useState<\n string | undefined\n >()\n const [accessorId, setAccessorId] = useState<string | undefined>()\n const [reviewerId, setReviewerId] = useState<string | undefined>()\n const [reviewerFilterType, setReviewerFilterType] = useState<\n SubmissionReviewerFilterType | undefined\n >(SubmissionReviewerFilterType.ALL)\n const [tableProps, setTableProps] =\n useState<AccessRequestSubmissionTableProps>({\n accessRequirementId,\n accessorId,\n reviewerId,\n showRequesters: true,\n submissionState: SubmissionState.SUBMITTED,\n })\n\n const location = useLocation()\n const navigate = useNavigate()\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const { data: isACT } = useIsCurrentUserACTMember()\n\n useEffect(() => {\n const initializeFromSearchParam = () => {\n const initialParams = new URLSearchParams(location.search)\n setAccessRequirementId(\n initialParams.get('accessRequirementId') ?? undefined,\n )\n setAccessorId(initialParams.get('accessorId') ?? undefined)\n setReviewerId(initialParams.get('reviewerId') ?? undefined)\n setReviewerFilterType(\n (initialParams.get(\n 'reviewerFilterType',\n ) as SubmissionReviewerFilterType) ?? undefined,\n )\n }\n initializeFromSearchParam()\n }, [location.search])\n\n const onRequesterChange = useCallback((selected: string | null) => {\n if (selected) {\n setAccessorId(selected)\n } else {\n setAccessorId(undefined)\n }\n }, [])\n\n const onReviewerChange = useCallback((selected: string | null) => {\n setReviewerId(getReviewerFilterID(selected))\n }, [])\n\n useDebouncedEffect(\n () => {\n const updateQueryParams = (\n accessRequirementId: string | undefined,\n accessorId: string | undefined,\n reviewerId: string | undefined,\n reviewerFilterType: SubmissionReviewerFilterType | undefined,\n ) => {\n const params = new URLSearchParams(\n omitBy(\n {\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n },\n item => item === undefined || item === '',\n ) as Record<string, string>,\n )\n navigate(\n {\n pathname: location.pathname,\n search: params.toString(),\n },\n { replace: true },\n )\n }\n\n updateQueryParams(\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n )\n setTableProps({\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n showRequesters: true,\n submissionState: SubmissionState.SUBMITTED,\n })\n },\n [\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n navigate,\n location.pathname,\n ],\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n\n return (\n <div className=\"AccessSubmissionDashboard\">\n <Grid\n container\n spacing={2}\n className=\"InputPanel\"\n sx={{ alignItems: 'stretch' }}\n >\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"arId-filter\"\n >\n Filter by Access Requirement Name\n </Typography>\n <AccessRequirementSearchBox\n inputId=\"arId-filter\"\n onChange={setAccessRequirementId}\n placeholder=\"Search for an Access Requirement Name \"\n />\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"requester-filter\"\n >\n Filter by Requester\n </Typography>\n <UserSearchBoxV2\n inputId=\"requester-filter\"\n placeholder=\"Search for a user name\"\n defaultValue={accessorId}\n onChange={onRequesterChange}\n typeFilter={TYPE_FILTER.USERS_ONLY}\n />\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"reviewer-filter\"\n >\n Filter by Reviewer\n </Typography>\n <UserSearchBoxV2\n inputId=\"reviewer-filter\"\n placeholder=\"Search for a user or team name\"\n defaultValue={reviewerId}\n onChange={onReviewerChange}\n />\n </Grid>\n {isACT && (\n <Grid size={12} sx={{ textAlign: 'right' }}>\n <Tooltip\n title={\n 'This will hide submissions that have a reviewer specifically assigned.'\n }\n >\n <FormControlLabel\n control={<Checkbox />}\n value={\n reviewerFilterType === SubmissionReviewerFilterType.ACT_ONLY\n }\n label=\"Reviewed by ACT only\"\n onChange={(_, checked) => {\n const newValue = checked\n ? SubmissionReviewerFilterType.ACT_ONLY\n : SubmissionReviewerFilterType.ALL\n setReviewerFilterType(newValue)\n }}\n />\n </Tooltip>\n </Grid>\n )}\n </Grid>\n\n <Typography variant=\"headline3\">Access Request Submissions</Typography>\n <AccessRequestSubmissionTable {...tableProps} />\n </div>\n )\n}\n"],"names":["getReviewerFilterID","selected","ACT_TEAM_ID","DataAccessSubmissionDashboard","accessRequirementId","setAccessRequirementId","useState","accessorId","setAccessorId","reviewerId","setReviewerId","reviewerFilterType","setReviewerFilterType","SubmissionReviewerFilterType","tableProps","setTableProps","SubmissionState","location","useLocation","navigate","useNavigate","INPUT_CHANGE_DEBOUNCE_DELAY_MS","isACT","useIsCurrentUserACTMember","useEffect","initialParams","onRequesterChange","useCallback","onReviewerChange","useDebouncedEffect","params","omitBy","item","jsxs","Grid","jsx","Typography","AccessRequirementSearchBox","UserSearchBoxV2","TYPE_FILTER","Tooltip","FormControlLabel","Checkbox","_","checked","newValue","AccessRequestSubmissionTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccessSubmissionDashboard.js","sources":["../../../src/components/dataaccess/AccessSubmissionDashboard.tsx"],"sourcesContent":["import React from 'react'\nimport { useIsCurrentUserACTMember } from '@/synapse-queries/index'\nimport { useDebouncedEffect } from '@/utils/hooks/useDebouncedEffect'\nimport { ACT_TEAM_ID } from '@/utils/SynapseConstants'\nimport {\n Checkbox,\n FormControlLabel,\n Grid,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n SubmissionReviewerFilterType,\n SubmissionState,\n TYPE_FILTER,\n} from '@sage-bionetworks/synapse-types'\nimport { omitBy } from 'lodash-es'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useLocation, useNavigate } from 'react-router'\nimport UserSearchBox from '../UserSearchBox/UserSearchBox'\nimport {\n AccessRequestSubmissionTable,\n AccessRequestSubmissionTableProps,\n} from './AccessRequestSubmissionTable'\nimport AccessRequirementSearchBox from './AccessRequirementSearchBox/AccessRequirementSearchBox'\n\nexport const getReviewerFilterID = (selected: string | null) => {\n if (selected && selected !== ACT_TEAM_ID.toString()) {\n return selected\n } else {\n return undefined\n }\n}\n\nexport const DataAccessSubmissionDashboard = (): React.ReactNode => {\n const [accessRequirementId, setAccessRequirementId] = useState<\n string | undefined\n >()\n const [accessorId, setAccessorId] = useState<string | undefined>()\n const [reviewerId, setReviewerId] = useState<string | undefined>()\n const [reviewerFilterType, setReviewerFilterType] = useState<\n SubmissionReviewerFilterType | undefined\n >(SubmissionReviewerFilterType.ALL)\n const [tableProps, setTableProps] =\n useState<AccessRequestSubmissionTableProps>({\n accessRequirementId,\n accessorId,\n reviewerId,\n showRequesters: true,\n submissionState: SubmissionState.SUBMITTED,\n })\n\n const location = useLocation()\n const navigate = useNavigate()\n const INPUT_CHANGE_DEBOUNCE_DELAY_MS = 500\n\n const { data: isACT } = useIsCurrentUserACTMember()\n\n useEffect(() => {\n const initializeFromSearchParam = () => {\n const initialParams = new URLSearchParams(location.search)\n setAccessRequirementId(\n initialParams.get('accessRequirementId') ?? undefined,\n )\n setAccessorId(initialParams.get('accessorId') ?? undefined)\n setReviewerId(initialParams.get('reviewerId') ?? undefined)\n setReviewerFilterType(\n (initialParams.get(\n 'reviewerFilterType',\n ) as SubmissionReviewerFilterType) ?? undefined,\n )\n }\n initializeFromSearchParam()\n }, [location.search])\n\n const onRequesterChange = useCallback((selected: string | null) => {\n if (selected) {\n setAccessorId(selected)\n } else {\n setAccessorId(undefined)\n }\n }, [])\n\n const onReviewerChange = useCallback((selected: string | null) => {\n setReviewerId(getReviewerFilterID(selected))\n }, [])\n\n useDebouncedEffect(\n () => {\n const updateQueryParams = (\n accessRequirementId: string | undefined,\n accessorId: string | undefined,\n reviewerId: string | undefined,\n reviewerFilterType: SubmissionReviewerFilterType | undefined,\n ) => {\n const params = new URLSearchParams(\n omitBy(\n {\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n },\n item => item === undefined || item === '',\n ) as Record<string, string>,\n )\n navigate(\n {\n pathname: location.pathname,\n search: params.toString(),\n },\n { replace: true },\n )\n }\n\n updateQueryParams(\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n )\n setTableProps({\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n showRequesters: true,\n submissionState: SubmissionState.SUBMITTED,\n })\n },\n [\n accessRequirementId,\n accessorId,\n reviewerId,\n reviewerFilterType,\n navigate,\n location.pathname,\n ],\n INPUT_CHANGE_DEBOUNCE_DELAY_MS,\n )\n\n return (\n <div className=\"AccessSubmissionDashboard\">\n <Grid\n container\n spacing={2}\n className=\"InputPanel\"\n sx={{ alignItems: 'stretch' }}\n >\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"arId-filter\"\n >\n Filter by Access Requirement Name\n </Typography>\n <AccessRequirementSearchBox\n inputId=\"arId-filter\"\n onChange={setAccessRequirementId}\n placeholder=\"Search for an Access Requirement Name \"\n />\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"requester-filter\"\n >\n Filter by Requester\n </Typography>\n <UserSearchBox\n inputId=\"requester-filter\"\n placeholder=\"Search for a user name\"\n defaultValue={accessorId}\n onChange={onRequesterChange}\n typeFilter={TYPE_FILTER.USERS_ONLY}\n />\n </Grid>\n <Grid size={{ xs: 12, md: 4 }}>\n <Typography\n component=\"label\"\n variant=\"smallText2\"\n htmlFor=\"reviewer-filter\"\n >\n Filter by Reviewer\n </Typography>\n <UserSearchBox\n inputId=\"reviewer-filter\"\n placeholder=\"Search for a user or team name\"\n defaultValue={reviewerId}\n onChange={onReviewerChange}\n />\n </Grid>\n {isACT && (\n <Grid size={12} sx={{ textAlign: 'right' }}>\n <Tooltip\n title={\n 'This will hide submissions that have a reviewer specifically assigned.'\n }\n >\n <FormControlLabel\n control={<Checkbox />}\n value={\n reviewerFilterType === SubmissionReviewerFilterType.ACT_ONLY\n }\n label=\"Reviewed by ACT only\"\n onChange={(_, checked) => {\n const newValue = checked\n ? SubmissionReviewerFilterType.ACT_ONLY\n : SubmissionReviewerFilterType.ALL\n setReviewerFilterType(newValue)\n }}\n />\n </Tooltip>\n </Grid>\n )}\n </Grid>\n\n <Typography variant=\"headline3\">Access Request Submissions</Typography>\n <AccessRequestSubmissionTable {...tableProps} />\n </div>\n )\n}\n"],"names":["getReviewerFilterID","selected","ACT_TEAM_ID","DataAccessSubmissionDashboard","accessRequirementId","setAccessRequirementId","useState","accessorId","setAccessorId","reviewerId","setReviewerId","reviewerFilterType","setReviewerFilterType","SubmissionReviewerFilterType","tableProps","setTableProps","SubmissionState","location","useLocation","navigate","useNavigate","INPUT_CHANGE_DEBOUNCE_DELAY_MS","isACT","useIsCurrentUserACTMember","useEffect","initialParams","onRequesterChange","useCallback","onReviewerChange","useDebouncedEffect","params","omitBy","item","jsxs","Grid","jsx","Typography","AccessRequirementSearchBox","UserSearchBox","TYPE_FILTER","Tooltip","FormControlLabel","Checkbox","_","checked","newValue","AccessRequestSubmissionTable"],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ import { formatDate as F } from "../../../utils/functions/DateFormatter.js";
|
|
|
40
40
|
import l from "dayjs";
|
|
41
41
|
import ne from "dayjs/plugin/duration";
|
|
42
42
|
import { SynapseErrorBoundary as oe } from "../../error/ErrorBanner.js";
|
|
43
|
-
import {
|
|
43
|
+
import { Markdown as de } from "../../Markdown/MarkdownSynapse.js";
|
|
44
44
|
import { UserBadge as S } from "../../UserCard/UserBadge.js";
|
|
45
45
|
import P from "../../UserOrTeamBadge/UserOrTeamBadge.js";
|
|
46
46
|
import { FileHandleLink as ce } from "../../widgets/FileHandleLink.js";
|
|
@@ -90,9 +90,9 @@ function ue(c, s) {
|
|
|
90
90
|
function nt(c) {
|
|
91
91
|
const { submissionId: s, isReviewer: d } = c, [u, A] = p(!1), { data: f } = se(), { data: t, isLoading: O } = Q(s, {
|
|
92
92
|
throwOnError: !0
|
|
93
|
-
}),
|
|
94
|
-
enabled:
|
|
95
|
-
}), C = !!(q && l(q.expiredOn).isBefore(l())),
|
|
93
|
+
}), k = !!(t && f && ue(f.ownerId, t)), { data: q, isLoading: B } = re(String(s), {
|
|
94
|
+
enabled: k && t && t.state === m.APPROVED
|
|
95
|
+
}), C = !!(q && l(q.expiredOn).isBefore(l())), E = t && t.submittedBy === f?.ownerId, { data: n } = z(
|
|
96
96
|
parseInt(t?.accessRequirementId),
|
|
97
97
|
{ enabled: !!t }
|
|
98
98
|
), { data: K, isLoading: v } = Y(
|
|
@@ -185,7 +185,7 @@ function nt(c) {
|
|
|
185
185
|
}
|
|
186
186
|
)
|
|
187
187
|
] }),
|
|
188
|
-
t &&
|
|
188
|
+
t && E && /* @__PURE__ */ r("div", { className: "ButtonContainer", children: [
|
|
189
189
|
/* @__PURE__ */ e(
|
|
190
190
|
W,
|
|
191
191
|
{
|
|
@@ -31,7 +31,7 @@ import "@sage-bionetworks/synapse-client";
|
|
|
31
31
|
import "../../utils/types/IsType.js";
|
|
32
32
|
import { useSearchAccessRequirementsInfinite as J } from "../../synapse-queries/dataaccess/useAccessRequirements.js";
|
|
33
33
|
import { formatDate as f } from "../../utils/functions/DateFormatter.js";
|
|
34
|
-
import { useReactTable as W, getCoreRowModel as X,
|
|
34
|
+
import { useReactTable as W, getCoreRowModel as X, getFacetedUniqueValues as Z, createColumnHelper as ee } from "@tanstack/react-table";
|
|
35
35
|
import A from "dayjs";
|
|
36
36
|
import { EntityLink as te } from "../EntityLink.js";
|
|
37
37
|
import a from "../TanStackTable/ColumnHeader.js";
|
|
@@ -58,7 +58,7 @@ const re = [
|
|
|
58
58
|
h,
|
|
59
59
|
U,
|
|
60
60
|
O
|
|
61
|
-
], ne = (e) => /^\d+$/.test(e), l =
|
|
61
|
+
], ne = (e) => /^\d+$/.test(e), l = ee(), ie = [
|
|
62
62
|
l.accessor("id", {
|
|
63
63
|
header: (e) => /* @__PURE__ */ r(a, { ...e, title: "AR ID" }),
|
|
64
64
|
cell: ({ getValue: e }) => /* @__PURE__ */ r(
|
|
@@ -213,7 +213,7 @@ function Ke(e) {
|
|
|
213
213
|
sorting: C,
|
|
214
214
|
columnFilters: _
|
|
215
215
|
},
|
|
216
|
-
getFacetedUniqueValues: (n, i) => i === "type" ? () => new Map(re.map((o) => [o, 0])) :
|
|
216
|
+
getFacetedUniqueValues: (n, i) => i === "type" ? () => new Map(re.map((o) => [o, 0])) : Z()(
|
|
217
217
|
n,
|
|
218
218
|
i
|
|
219
219
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseAccessRequirementTable.js","sources":["../../../src/components/dataaccess/UseAccessRequirementTable.tsx"],"sourcesContent":["import { useSearchAccessRequirementsInfinite } from '@/synapse-queries'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { ACT_TEAM_ID } from '@/utils/SynapseConstants'\nimport { Link, Typography } from '@mui/material'\nimport {\n ACCESS_REQUIREMENT_CONCRETE_TYPE,\n ACCESS_TYPE,\n AccessRequirementSearchRequest,\n AccessRequirementSearchResult,\n AccessRequirementSearchSort,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n SortDirection,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport {\n ColumnFiltersState,\n ColumnSort,\n createColumnHelper,\n getCoreRowModel,\n getFacetedUniqueValues as defaultGetFacetedUniqueValues,\n SortingState,\n Table,\n Updater,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport { noop } from 'lodash-es'\nimport { Fragment, useCallback, useMemo, useState } from 'react'\nimport { EntityLink } from '../EntityLink'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport UserOrTeamBadge from '../UserOrTeamBadge/UserOrTeamBadge'\n\nexport function accessRequirementConcreteTypeValueToDisplayValue(\n accessRequirementConcreteTypeValue: ACCESS_REQUIREMENT_CONCRETE_TYPE,\n) {\n switch (accessRequirementConcreteTypeValue) {\n case TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n case SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE: {\n return SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n }\n case MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n case ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n case LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n default:\n return 'Unknown'\n }\n}\n\nconst ALL_ACCESS_REQUIREMENT_CONCRETE_TYPES = [\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n]\n\nconst isIntegerInput = (v: string): boolean => {\n return /^\\d+$/.test(v)\n}\nconst columnHelper = createColumnHelper<AccessRequirementSearchResult>()\nconst columns = [\n columnHelper.accessor('id', {\n header: props => <ColumnHeader {...props} title={'AR ID'} />,\n cell: ({ getValue }) => (\n <Link\n href={`${\n PRODUCTION_ENDPOINT_CONFIG.PORTAL\n }AccessRequirement:AR_ID=${getValue()}`}\n >\n {getValue()}\n </Link>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('name', {\n header: props => (\n <ColumnHeader {...props} title={'Access Requirement Name'} />\n ),\n cell: ({ getValue }) => getValue(),\n enableSorting: true,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('type', {\n header: props => <ColumnHeader {...props} title={'Type'} />,\n cell: ({ getValue }) =>\n accessRequirementConcreteTypeValueToDisplayValue(getValue()),\n enableSorting: false,\n enableColumnFilter: true,\n meta: {\n filterVariant: 'enumeration',\n getDisplayText: accessRequirementConcreteTypeValueToDisplayValue,\n enableMultipleSelect: false,\n },\n }),\n columnHelper.accessor('relatedProjectIds', {\n header: props => <ColumnHeader {...props} title={'Related to Projects'} />,\n cell: ({ getValue }) => (\n <>\n {getValue().map(projectId => (\n <Fragment key={projectId}>\n <EntityLink entity={projectId} />{' '}\n <Typography\n component={'span'}\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n ({projectId})\n </Typography>\n <br />\n </Fragment>\n ))}\n </>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('reviewerIds', {\n header: props => <ColumnHeader {...props} title={'Reviewer'} />,\n cell: ({ getValue }) => (\n <>\n {getValue().length === 0 ? (\n <UserOrTeamBadge principalId={ACT_TEAM_ID} />\n ) : (\n getValue().map(reviewerId => (\n <UserOrTeamBadge key={reviewerId} principalId={reviewerId} />\n ))\n )}\n </>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('modifiedOn', {\n header: props => <ColumnHeader {...props} title={'Last Modified'} />,\n cell: ({ getValue }) => formatDate(dayjs(getValue())),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title={'Created On'} />,\n cell: ({ getValue }) => formatDate(dayjs(getValue())),\n enableSorting: true,\n enableColumnFilter: false,\n }),\n]\nconst DEFAULT_SORTING_STATE: SortingState = [\n {\n desc: true,\n id: 'createdOn',\n },\n]\ntype UseAccessRequirementTableOptions = {\n nameOrID?: string\n relatedProjectId?: string\n reviewerId?: string\n accessType?: ACCESS_TYPE\n typeFilter?: string\n onTypeFilterChange?: (typeFilter: string | undefined) => void\n}\n\nfunction columnSortToAccessRequirementSearchSort(\n columnSort: ColumnSort,\n): AccessRequirementSearchSort {\n const direction: SortDirection = columnSort.desc ? 'DESC' : 'ASC'\n\n if (columnSort.id == 'createdOn') {\n return {\n field: 'CREATED_ON',\n direction,\n }\n } else if (columnSort.id == 'name') {\n return {\n field: 'NAME',\n direction,\n }\n } else {\n throw new Error(\n `Could not map sort field ${columnSort.id} to AccessRequirementSortField`,\n )\n }\n}\n\nfunction getTypeFilterFromColumnFilters(\n columnFilters?: ColumnFiltersState,\n): string | undefined {\n const matchingFilter = (columnFilters || []).find(f => f.id === 'type')\n const filterValues = matchingFilter?.value\n if (filterValues) {\n return (filterValues as string[])[0]\n }\n return undefined\n}\n\nexport function useAccessRequirementTable(\n opts: UseAccessRequirementTableOptions,\n) {\n const {\n nameOrID,\n relatedProjectId,\n reviewerId,\n accessType,\n typeFilter,\n onTypeFilterChange = noop,\n } = opts\n const [sortingState, setSortingState] = useState<SortingState>(\n DEFAULT_SORTING_STATE,\n )\n\n const columnFilters = useMemo(\n () => (typeFilter ? [{ id: 'type', value: [typeFilter] }] : []),\n [typeFilter],\n )\n\n const onColumnFiltersChange = useCallback(\n (updaterOrValue: Updater<ColumnFiltersState>) => {\n const newValue: ColumnFiltersState =\n typeof updaterOrValue === 'function'\n ? updaterOrValue(columnFilters)\n : updaterOrValue\n\n // Unlike the other controls, the type filter control is inside the table. State is still stored in the parent component.\n // When the user updates the filter, this function will fire, so we must propagate changes to the type filter to the parent.\n const typeFilter = getTypeFilterFromColumnFilters(newValue)\n onTypeFilterChange(typeFilter)\n },\n [columnFilters, onTypeFilterChange],\n )\n\n // Map the @tanstack/react-table sort state object to the Synapse API object\n const apiRequestSortState: AccessRequirementSearchRequest['sort'] = useMemo(\n () => sortingState.map(columnSortToAccessRequirementSearchSort),\n [sortingState],\n )\n\n const searchRequest: Omit<AccessRequirementSearchRequest, 'nextPageToken'> =\n useMemo(() => {\n // SWC-6615: If the input string is a single integer, assume it's the AR ID. Otherwise, use as the nameContains field.\n let nameContains: string | undefined = undefined\n let ids: number[] | undefined = undefined\n if (nameOrID !== undefined) {\n const nameOrIDTrimmed = nameOrID.trim()\n if (isIntegerInput(nameOrIDTrimmed)) {\n ids = [Number.parseInt(nameOrIDTrimmed)]\n } else {\n nameContains = nameOrIDTrimmed\n }\n }\n return {\n ids,\n nameContains,\n relatedProjectId,\n reviewerId,\n accessType,\n sort: apiRequestSortState,\n type: typeFilter,\n }\n }, [\n nameOrID,\n relatedProjectId,\n reviewerId,\n accessType,\n apiRequestSortState,\n typeFilter,\n ])\n\n const { data, hasNextPage, fetchNextPage, isLoading, isFetchingNextPage } =\n useSearchAccessRequirementsInfinite(searchRequest)\n\n const accessRequirements = useMemo(\n () => data?.pages.flatMap(page => page.results) ?? [],\n [data],\n )\n\n const table: Table<AccessRequirementSearchResult> =\n useReactTable<AccessRequirementSearchResult>({\n data: accessRequirements,\n columns: columns,\n state: {\n sorting: sortingState,\n columnFilters: columnFilters,\n },\n getFacetedUniqueValues: (\n table: Table<AccessRequirementSearchResult>,\n columnId: string,\n ) => {\n if (columnId === 'type') {\n // Hard-code the set of possible access requirement types with count = 0 to indicate that we don't have facet counts.\n return () =>\n new Map(ALL_ACCESS_REQUIREMENT_CONCRETE_TYPES.map(v => [v, 0]))\n }\n return defaultGetFacetedUniqueValues<AccessRequirementSearchResult>()(\n table,\n columnId,\n )\n },\n onSortingChange: setSortingState,\n onColumnFiltersChange: onColumnFiltersChange,\n getRowId: row => row.id,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n manualSorting: true,\n enableMultiSort: false,\n // Sort is required for this API call, so prevent the user from removing the sort.\n enableSortingRemoval: false,\n manualFiltering: true,\n })\n\n return { table, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage }\n}\n"],"names":["accessRequirementConcreteTypeValueToDisplayValue","accessRequirementConcreteTypeValue","TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","ALL_ACCESS_REQUIREMENT_CONCRETE_TYPES","isIntegerInput","v","columnHelper","createColumnHelper","columns","props","jsx","ColumnHeader","getValue","Link","PRODUCTION_ENDPOINT_CONFIG","Fragment","projectId","jsxs","EntityLink","Typography","UserOrTeamBadge","ACT_TEAM_ID","reviewerId","formatDate","dayjs","DEFAULT_SORTING_STATE","columnSortToAccessRequirementSearchSort","columnSort","direction","getTypeFilterFromColumnFilters","columnFilters","filterValues","f","useAccessRequirementTable","opts","nameOrID","relatedProjectId","accessType","typeFilter","onTypeFilterChange","noop","sortingState","setSortingState","useState","useMemo","onColumnFiltersChange","useCallback","updaterOrValue","newValue","apiRequestSortState","searchRequest","nameContains","ids","nameOrIDTrimmed","data","hasNextPage","fetchNextPage","isLoading","isFetchingNextPage","useSearchAccessRequirementsInfinite","accessRequirements","page","useReactTable","table","columnId","defaultGetFacetedUniqueValues","row","getCoreRowModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCO,SAASA,EACdC,GACA;AACA,UAAQA,GAAA;AAAA,IACN,KAAKC;AACH,aAAOC;AAAA,IACT,KAAKC;AACH,aAAOC;AAAA,IAET,KAAKC;AACH,aAAOC;AAAA,IACT,KAAKC;AACH,aAAOC;AAAA,IACT,KAAKC;AACH,aAAOC;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEA,MAAMC,KAAwC;AAAA,EAC5CV;AAAA,EACAE;AAAA,EACAE;AAAA,EACAE;AAAA,EACAE;AACF,GAEMG,KAAiB,CAACC,MACf,QAAQ,KAAKA,CAAC,GAEjBC,IAAeC,EAAA,GACfC,KAAU;AAAA,EACdF,EAAa,SAAS,MAAM;AAAA,IAC1B,QAAQ,CAAAG,MAAS,gBAAAC,EAACC,KAAc,GAAGF,GAAO,OAAO,SAAS;AAAA,IAC1D,MAAM,CAAC,EAAE,UAAAG,EAAA,MACP,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,MAAM,GACJC,EAA2B,MAC7B,2BAA2BF,GAAU;AAAA,QAEpC,UAAAA,EAAA;AAAA,MAAS;AAAA,IAAA;AAAA,IAGd,eAAe;AAAA,IACf,oBAAoB;AAAA,EAAA,CACrB;AAAA,EACDN,EAAa,SAAS,QAAQ;AAAA,IAC5B,QAAQ,CAAAG,MACN,gBAAAC,EAACC,KAAc,GAAGF,GAAO,OAAO,2BAA2B;AAAA,IAE7D,MAAM,CAAC,EAAE,UAAAG,EAAA,MAAeA,EAAA;AAAA,IACxB,eAAe;AAAA,IACf,oBAAoB;AAAA,EAAA,CACrB;AAAA,EACDN,EAAa,SAAS,QAAQ;AAAA,IAC5B,QAAQ,CAAAG,MAAS,gBAAAC,EAACC,KAAc,GAAGF,GAAO,OAAO,QAAQ;AAAA,IACzD,MAAM,CAAC,EAAE,UAAAG,QACPrB,EAAiDqB,GAAU;AAAA,IAC7D,eAAe;AAAA,IACf,oBAAoB;AAAA,IACpB,MAAM;AAAA,MACJ,eAAe;AAAA,MACf,gBAAgBrB;AAAA,MAChB,sBAAsB;AAAA,IAAA;AAAA,EACxB,CACD;AAAA,EACDe,EAAa,SAAS,qBAAqB;AAAA,IACzC,QAAQ,CAAAG,MAAS,gBAAAC,EAACC,KAAc,GAAGF,GAAO,OAAO,uBAAuB;AAAA,IACxE,MAAM,CAAC,EAAE,UAAAG,EAAA,MACP,gBAAAF,EAAAK,GAAA,EACG,UAAAH,EAAA,EAAW,IAAI,CAAAI,MACd,gBAAAC,EAACF,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAL,EAACQ,IAAA,EAAW,QAAQF,EAAA,CAAW;AAAA,MAAG;AAAA,MAClC,gBAAAC;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,UACX,SAAS;AAAA,UACT,IAAI;AAAA,YACF,OAAO;AAAA,UAAA;AAAA,UAEV,UAAA;AAAA,YAAA;AAAA,YACGH;AAAA,YAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,wBAEb,MAAA,CAAA,CAAG;AAAA,IAAA,KAXSA,CAYf,CACD,GACH;AAAA,IAEF,eAAe;AAAA,IACf,oBAAoB;AAAA,EAAA,CACrB;AAAA,EACDV,EAAa,SAAS,eAAe;AAAA,IACnC,QAAQ,CAAAG,MAAS,gBAAAC,EAACC,KAAc,GAAGF,GAAO,OAAO,YAAY;AAAA,IAC7D,MAAM,CAAC,EAAE,UAAAG,+BAEJ,UAAAA,EAAA,EAAW,WAAW,IACrB,gBAAAF,EAACU,GAAA,EAAgB,aAAaC,EAAA,CAAa,IAE3CT,EAAA,EAAW,IAAI,CAAAU,MACb,gBAAAZ,EAACU,GAAA,EAAiC,aAAaE,EAAA,GAAzBA,CAAqC,CAC5D,EAAA,CAEL;AAAA,IAEF,eAAe;AAAA,IACf,oBAAoB;AAAA,EAAA,CACrB;AAAA,EACDhB,EAAa,SAAS,cAAc;AAAA,IAClC,QAAQ,CAAAG,MAAS,gBAAAC,EAACC,KAAc,GAAGF,GAAO,OAAO,iBAAiB;AAAA,IAClE,MAAM,CAAC,EAAE,UAAAG,EAAA,MAAeW,EAAWC,EAAMZ,EAAA,CAAU,CAAC;AAAA,IACpD,eAAe;AAAA,IACf,oBAAoB;AAAA,EAAA,CACrB;AAAA,EACDN,EAAa,SAAS,aAAa;AAAA,IACjC,QAAQ,CAAAG,MAAS,gBAAAC,EAACC,KAAc,GAAGF,GAAO,OAAO,cAAc;AAAA,IAC/D,MAAM,CAAC,EAAE,UAAAG,EAAA,MAAeW,EAAWC,EAAMZ,EAAA,CAAU,CAAC;AAAA,IACpD,eAAe;AAAA,IACf,oBAAoB;AAAA,EAAA,CACrB;AACH,GACMa,KAAsC;AAAA,EAC1C;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,EAAA;AAER;AAUA,SAASC,GACPC,GAC6B;AAC7B,QAAMC,IAA2BD,EAAW,OAAO,SAAS;AAE5D,MAAIA,EAAW,MAAM;AACnB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,WAAAC;AAAA,IAAA;AAEJ,MAAWD,EAAW,MAAM;AAC1B,WAAO;AAAA,MACL,OAAO;AAAA,MACP,WAAAC;AAAA,IAAA;AAGF,QAAM,IAAI;AAAA,IACR,4BAA4BD,EAAW,EAAE;AAAA,EAAA;AAG/C;AAEA,SAASE,GACPC,GACoB;AAEpB,QAAMC,KADkBD,KAAiB,IAAI,KAAK,CAAAE,MAAKA,EAAE,OAAO,MAAM,GACjC;AACrC,MAAID;AACF,WAAQA,EAA0B,CAAC;AAGvC;AAEO,SAASE,GACdC,GACA;AACA,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,YAAAd;AAAA,IACA,YAAAe;AAAA,IACA,YAAAC;AAAA,IACA,oBAAAC,IAAqBC;AAAA,EAAA,IACnBN,GACE,CAACO,GAAcC,CAAe,IAAIC;AAAA,IACtClB;AAAA,EAAA,GAGIK,IAAgBc;AAAA,IACpB,MAAON,IAAa,CAAC,EAAE,IAAI,QAAQ,OAAO,CAACA,CAAU,EAAA,CAAG,IAAI,CAAA;AAAA,IAC5D,CAACA,CAAU;AAAA,EAAA,GAGPO,IAAwBC;AAAA,IAC5B,CAACC,MAAgD;AAC/C,YAAMC,IACJ,OAAOD,KAAmB,aACtBA,EAAejB,CAAa,IAC5BiB,GAIAT,IAAaT,GAA+BmB,CAAQ;AAC1D,MAAAT,EAAmBD,CAAU;AAAA,IAC/B;AAAA,IACA,CAACR,GAAeS,CAAkB;AAAA,EAAA,GAI9BU,IAA8DL;AAAA,IAClE,MAAMH,EAAa,IAAIf,EAAuC;AAAA,IAC9D,CAACe,CAAY;AAAA,EAAA,GAGTS,IACJN,EAAQ,MAAM;AAEZ,QAAIO,GACAC;AACJ,QAAIjB,MAAa,QAAW;AAC1B,YAAMkB,IAAkBlB,EAAS,KAAA;AACjC,MAAI/B,GAAeiD,CAAe,IAChCD,IAAM,CAAC,OAAO,SAASC,CAAe,CAAC,IAEvCF,IAAeE;AAAA,IAEnB;AACA,WAAO;AAAA,MACL,KAAAD;AAAA,MACA,cAAAD;AAAA,MACA,kBAAAf;AAAA,MACA,YAAAd;AAAA,MACA,YAAAe;AAAA,MACA,MAAMY;AAAA,MACN,MAAMX;AAAA,IAAA;AAAA,EAEV,GAAG;AAAA,IACDH;AAAA,IACAC;AAAA,IACAd;AAAA,IACAe;AAAA,IACAY;AAAA,IACAX;AAAA,EAAA,CACD,GAEG,EAAE,MAAAgB,GAAM,aAAAC,GAAa,eAAAC,GAAe,WAAAC,GAAW,oBAAAC,EAAA,IACnDC,EAAoCT,CAAa,GAE7CU,IAAqBhB;AAAA,IACzB,MAAMU,GAAM,MAAM,QAAQ,OAAQO,EAAK,OAAO,KAAK,CAAA;AAAA,IACnD,CAACP,CAAI;AAAA,EAAA;AAqCP,SAAO,EAAE,OAjCPQ,EAA6C;AAAA,IAC3C,MAAMF;AAAA,IACN,SAAApD;AAAA,IACA,OAAO;AAAA,MACL,SAASiC;AAAA,MACT,eAAAX;AAAA,IAAA;AAAA,IAEF,wBAAwB,CACtBiC,GACAC,MAEIA,MAAa,SAER,MACL,IAAI,IAAI7D,GAAsC,IAAI,OAAK,CAACE,GAAG,CAAC,CAAC,CAAC,IAE3D4D,GAAA;AAAA,MACLF;AAAAA,MACAC;AAAA,IAAA;AAAA,IAGJ,iBAAiBtB;AAAA,IACjB,uBAAAG;AAAA,IACA,UAAU,OAAOqB,EAAI;AAAA,IACrB,iBAAiBC,EAAA;AAAA,IACjB,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,iBAAiB;AAAA;AAAA,IAEjB,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,EAAA,CAClB,GAEa,WAAAV,GAAW,aAAAF,GAAa,eAAAC,GAAe,oBAAAE,EAAA;AACzD;"}
|
|
1
|
+
{"version":3,"file":"UseAccessRequirementTable.js","sources":["../../../src/components/dataaccess/UseAccessRequirementTable.tsx"],"sourcesContent":["import { useSearchAccessRequirementsInfinite } from '@/synapse-queries'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport { ACT_TEAM_ID } from '@/utils/SynapseConstants'\nimport { Link, Typography } from '@mui/material'\nimport {\n ACCESS_REQUIREMENT_CONCRETE_TYPE,\n ACCESS_TYPE,\n AccessRequirementSearchRequest,\n AccessRequirementSearchResult,\n AccessRequirementSearchSort,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n SortDirection,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport {\n ColumnFiltersState,\n ColumnSort,\n createColumnHelper,\n getCoreRowModel,\n getFacetedUniqueValues as defaultGetFacetedUniqueValues,\n SortingState,\n Table,\n Updater,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport { noop } from 'lodash-es'\nimport { Fragment, useCallback, useMemo, useState } from 'react'\nimport { EntityLink } from '../EntityLink'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport UserOrTeamBadge from '../UserOrTeamBadge/UserOrTeamBadge'\n\nexport function accessRequirementConcreteTypeValueToDisplayValue(\n accessRequirementConcreteTypeValue: ACCESS_REQUIREMENT_CONCRETE_TYPE,\n) {\n switch (accessRequirementConcreteTypeValue) {\n case TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n case SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE: {\n return SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n }\n case MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n case ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n case LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE\n default:\n return 'Unknown'\n }\n}\n\nconst ALL_ACCESS_REQUIREMENT_CONCRETE_TYPES = [\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n]\n\nconst isIntegerInput = (v: string): boolean => {\n return /^\\d+$/.test(v)\n}\nconst columnHelper = createColumnHelper<AccessRequirementSearchResult>()\nconst columns = [\n columnHelper.accessor('id', {\n header: props => <ColumnHeader {...props} title={'AR ID'} />,\n cell: ({ getValue }) => (\n <Link\n href={`${\n PRODUCTION_ENDPOINT_CONFIG.PORTAL\n }AccessRequirement:AR_ID=${getValue()}`}\n >\n {getValue()}\n </Link>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('name', {\n header: props => (\n <ColumnHeader {...props} title={'Access Requirement Name'} />\n ),\n cell: ({ getValue }) => getValue(),\n enableSorting: true,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('type', {\n header: props => <ColumnHeader {...props} title={'Type'} />,\n cell: ({ getValue }) =>\n accessRequirementConcreteTypeValueToDisplayValue(getValue()),\n enableSorting: false,\n enableColumnFilter: true,\n meta: {\n filterVariant: 'enumeration',\n getDisplayText: accessRequirementConcreteTypeValueToDisplayValue,\n enableMultipleSelect: false,\n },\n }),\n columnHelper.accessor('relatedProjectIds', {\n header: props => <ColumnHeader {...props} title={'Related to Projects'} />,\n cell: ({ getValue }) => (\n <>\n {getValue().map(projectId => (\n <Fragment key={projectId}>\n <EntityLink entity={projectId} />{' '}\n <Typography\n component={'span'}\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n ({projectId})\n </Typography>\n <br />\n </Fragment>\n ))}\n </>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('reviewerIds', {\n header: props => <ColumnHeader {...props} title={'Reviewer'} />,\n cell: ({ getValue }) => (\n <>\n {getValue().length === 0 ? (\n <UserOrTeamBadge principalId={ACT_TEAM_ID} />\n ) : (\n getValue().map(reviewerId => (\n <UserOrTeamBadge key={reviewerId} principalId={reviewerId} />\n ))\n )}\n </>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('modifiedOn', {\n header: props => <ColumnHeader {...props} title={'Last Modified'} />,\n cell: ({ getValue }) => formatDate(dayjs(getValue())),\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title={'Created On'} />,\n cell: ({ getValue }) => formatDate(dayjs(getValue())),\n enableSorting: true,\n enableColumnFilter: false,\n }),\n]\nconst DEFAULT_SORTING_STATE: SortingState = [\n {\n desc: true,\n id: 'createdOn',\n },\n]\ntype UseAccessRequirementTableOptions = {\n nameOrID?: string\n relatedProjectId?: string\n reviewerId?: string\n accessType?: ACCESS_TYPE\n typeFilter?: string\n onTypeFilterChange?: (typeFilter: string | undefined) => void\n}\n\nfunction columnSortToAccessRequirementSearchSort(\n columnSort: ColumnSort,\n): AccessRequirementSearchSort {\n const direction: SortDirection = columnSort.desc ? 'DESC' : 'ASC'\n\n if (columnSort.id == 'createdOn') {\n return {\n field: 'CREATED_ON',\n direction,\n }\n } else if (columnSort.id == 'name') {\n return {\n field: 'NAME',\n direction,\n }\n } else {\n throw new Error(\n `Could not map sort field ${columnSort.id} to AccessRequirementSortField`,\n )\n }\n}\n\nfunction getTypeFilterFromColumnFilters(\n columnFilters?: ColumnFiltersState,\n): string | undefined {\n const matchingFilter = (columnFilters || []).find(f => f.id === 'type')\n const filterValues = matchingFilter?.value\n if (filterValues) {\n return (filterValues as string[])[0]\n }\n return undefined\n}\n\nexport function useAccessRequirementTable(\n opts: UseAccessRequirementTableOptions,\n) {\n const {\n nameOrID,\n relatedProjectId,\n reviewerId,\n accessType,\n typeFilter,\n onTypeFilterChange = noop,\n } = opts\n const [sortingState, setSortingState] = useState<SortingState>(\n DEFAULT_SORTING_STATE,\n )\n\n const columnFilters = useMemo(\n () => (typeFilter ? [{ id: 'type', value: [typeFilter] }] : []),\n [typeFilter],\n )\n\n const onColumnFiltersChange = useCallback(\n (updaterOrValue: Updater<ColumnFiltersState>) => {\n const newValue: ColumnFiltersState =\n typeof updaterOrValue === 'function'\n ? updaterOrValue(columnFilters)\n : updaterOrValue\n\n // Unlike the other controls, the type filter control is inside the table. State is still stored in the parent component.\n // When the user updates the filter, this function will fire, so we must propagate changes to the type filter to the parent.\n const typeFilter = getTypeFilterFromColumnFilters(newValue)\n onTypeFilterChange(typeFilter)\n },\n [columnFilters, onTypeFilterChange],\n )\n\n // Map the @tanstack/react-table sort state object to the Synapse API object\n const apiRequestSortState: AccessRequirementSearchRequest['sort'] = useMemo(\n () => sortingState.map(columnSortToAccessRequirementSearchSort),\n [sortingState],\n )\n\n const searchRequest: Omit<AccessRequirementSearchRequest, 'nextPageToken'> =\n useMemo(() => {\n // SWC-6615: If the input string is a single integer, assume it's the AR ID. Otherwise, use as the nameContains field.\n let nameContains: string | undefined = undefined\n let ids: number[] | undefined = undefined\n if (nameOrID !== undefined) {\n const nameOrIDTrimmed = nameOrID.trim()\n if (isIntegerInput(nameOrIDTrimmed)) {\n ids = [Number.parseInt(nameOrIDTrimmed)]\n } else {\n nameContains = nameOrIDTrimmed\n }\n }\n return {\n ids,\n nameContains,\n relatedProjectId,\n reviewerId,\n accessType,\n sort: apiRequestSortState,\n type: typeFilter,\n }\n }, [\n nameOrID,\n relatedProjectId,\n reviewerId,\n accessType,\n apiRequestSortState,\n typeFilter,\n ])\n\n const { data, hasNextPage, fetchNextPage, isLoading, isFetchingNextPage } =\n useSearchAccessRequirementsInfinite(searchRequest)\n\n const accessRequirements = useMemo(\n () => data?.pages.flatMap(page => page.results) ?? [],\n [data],\n )\n\n const table: Table<AccessRequirementSearchResult> =\n useReactTable<AccessRequirementSearchResult>({\n data: accessRequirements,\n columns: columns,\n state: {\n sorting: sortingState,\n columnFilters: columnFilters,\n },\n getFacetedUniqueValues: (\n table: Table<AccessRequirementSearchResult>,\n columnId: string,\n ) => {\n if (columnId === 'type') {\n // Hard-code the set of possible access requirement types with count = 0 to indicate that we don't have facet counts.\n return () =>\n new Map(ALL_ACCESS_REQUIREMENT_CONCRETE_TYPES.map(v => [v, 0]))\n }\n return defaultGetFacetedUniqueValues<AccessRequirementSearchResult>()(\n table,\n columnId,\n )\n },\n onSortingChange: setSortingState,\n onColumnFiltersChange: onColumnFiltersChange,\n getRowId: row => row.id,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n manualSorting: true,\n enableMultiSort: false,\n // Sort is required for this API call, so prevent the user from removing the sort.\n enableSortingRemoval: false,\n manualFiltering: true,\n })\n\n return { table, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage }\n}\n"],"names":["accessRequirementConcreteTypeValueToDisplayValue","accessRequirementConcreteTypeValue","TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE","LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_DISPLAY_VALUE","ALL_ACCESS_REQUIREMENT_CONCRETE_TYPES","isIntegerInput","v","columnHelper","createColumnHelper","columns","props","jsx","ColumnHeader","getValue","Link","PRODUCTION_ENDPOINT_CONFIG","Fragment","projectId","jsxs","EntityLink","Typography","UserOrTeamBadge","ACT_TEAM_ID","reviewerId","formatDate","dayjs","DEFAULT_SORTING_STATE","columnSortToAccessRequirementSearchSort","columnSort","direction","getTypeFilterFromColumnFilters","columnFilters","filterValues","f","useAccessRequirementTable","opts","nameOrID","relatedProjectId","accessType","typeFilter","onTypeFilterChange","noop","sortingState","setSortingState","useState","useMemo","onColumnFiltersChange","useCallback","updaterOrValue","newValue","apiRequestSortState","searchRequest","nameContains","ids","nameOrIDTrimmed","data","hasNextPage","fetchNextPage","isLoading","isFetchingNextPage","useSearchAccessRequirementsInfinite","accessRequirements","page","useReactTable","table","columnId","defaultGetFacetedUniqueValues","row","getCoreRowModel"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { StyledFormControl as ce } from "../styled/StyledFormControl.js";
|
|
|
9
9
|
import { displayToast as de } from "../ToastMessage/ToastMessage.js";
|
|
10
10
|
import { useGetDOI as me, useCreateOrUpdateDOI as ue } from "../../synapse-queries/doi/useDOI.js";
|
|
11
11
|
import { useGetVersions as pe } from "../../synapse-queries/entity/useEntity.js";
|
|
12
|
-
import
|
|
12
|
+
import fe from "../../synapse-queries/entity/useEntityBundle.js";
|
|
13
13
|
import { useGetPortal as he } from "../../synapse-queries/portal/usePortal.js";
|
|
14
14
|
import { useGetRealmPrincipals as ye } from "../../synapse-queries/realm/useRealmPrincipals.js";
|
|
15
15
|
import { useGetCurrentUserProfile as ge } from "../../synapse-queries/user/useUserBundle.js";
|
|
@@ -30,7 +30,7 @@ import "universal-cookie";
|
|
|
30
30
|
import "../../../utils/AppUtils/session/ApplicationSessionContext.js";
|
|
31
31
|
import "../../../utils/context/FullContextProvider.js";
|
|
32
32
|
import "../../../utils/context/DocumentMetadataContext.js";
|
|
33
|
-
import '../../FullWidthAlert/FullWidthAlert.css';import '../../../style/components/_spinner.css';/* empty css */
|
|
33
|
+
import '../../Plot/SynapsePlot.css';import '../../FullWidthAlert/FullWidthAlert.css';import '../../../style/components/_spinner.css';/* empty css */
|
|
34
34
|
import "react-router";
|
|
35
35
|
import "@mui/icons-material/Close";
|
|
36
36
|
import "../../styled/StyledPopover.js";
|
|
@@ -53,11 +53,14 @@ import "@mui/material/SvgIcon";
|
|
|
53
53
|
import "../../../assets/icons/AccessPending.svg.js";
|
|
54
54
|
import "../../../assets/icons/AccessPendingCloud.svg.js";
|
|
55
55
|
import "../../../assets/icons/FileWithShield.svg.js";
|
|
56
|
+
import "../../../assets/icons/MultiFile.svg.js";
|
|
57
|
+
import "../../../assets/icons/UnpackagableFile.svg.js";
|
|
56
58
|
import "../../../assets/icons/bioChemicalPhysical.svg.js";
|
|
57
59
|
import "../../../assets/icons/computationalTool.svg.js";
|
|
58
60
|
import "../../../assets/icons/dataReuse.svg.js";
|
|
59
61
|
import "../../../assets/icons/inSilicoModel.svg.js";
|
|
60
62
|
import "../../../assets/icons/modelSystem.svg.js";
|
|
63
|
+
import "../../../assets/mui_components/PackagableFile.svg.js";
|
|
61
64
|
import "../../../assets/icons/spatialProfiling.svg.js";
|
|
62
65
|
/* empty css */
|
|
63
66
|
import "../../Authentication/AuthenticationMethodSelection.js";
|
|
@@ -83,6 +86,7 @@ import "../../../assets/icons/study-complete.svg.js";
|
|
|
83
86
|
import "../../../assets/icons/translational.svg.js";
|
|
84
87
|
import "../../../assets/icons/tree_horizontal.svg.js";
|
|
85
88
|
import "../../../assets/icons/standardDataModel.svg.js";
|
|
89
|
+
import "../../../assets/icons/Challenge.svg.js";
|
|
86
90
|
import "react-intersection-observer";
|
|
87
91
|
import "@rjsf/utils";
|
|
88
92
|
import "../../SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js";
|
|
@@ -100,10 +104,10 @@ import "../../../assets/icons/DoubleQuotes.svg.js";
|
|
|
100
104
|
import "../../EntityDownloadConfirmation/EntityDownloadConfirmation.js";
|
|
101
105
|
import "../../QueryContext/QueryContext.js";
|
|
102
106
|
import "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
|
|
107
|
+
import "react-share";
|
|
103
108
|
import "../../GenericCard/GenericCard.js";
|
|
104
109
|
import "@mui/system";
|
|
105
110
|
import "../../GenericCard/Linkify.js";
|
|
106
|
-
import "react-share";
|
|
107
111
|
import "jotai";
|
|
108
112
|
import "lodash-es/noop";
|
|
109
113
|
import "../../QueryWrapper/TableRowSelectionState.js";
|
|
@@ -164,7 +168,6 @@ import "@mui/x-date-pickers/AdapterDayjs";
|
|
|
164
168
|
import "@mui/x-date-pickers/LocalizationProvider";
|
|
165
169
|
import "../../FeaturedDataTabs/FacetPlotsCardGrid.js";
|
|
166
170
|
import "../../Forum/ForumTable.js";
|
|
167
|
-
import "@mui/material/IconButton";
|
|
168
171
|
import "@mui/icons-material/NavigateNext";
|
|
169
172
|
import "@react-google-maps/api";
|
|
170
173
|
import "../../Markdown/MarkdownUtils.js";
|
|
@@ -178,6 +181,7 @@ import "lodash-es/orderBy";
|
|
|
178
181
|
import "../../styled/LargeButton.js";
|
|
179
182
|
import "../../../assets/illustrations/diagonalLinePattern.svg.js";
|
|
180
183
|
import "@upsetjs/react";
|
|
184
|
+
/* empty css */
|
|
181
185
|
import "reactflow";
|
|
182
186
|
import "../../ProvenanceGraph/ProvenanceUtils.js";
|
|
183
187
|
import "reactflow/dist/style.css";
|
|
@@ -203,6 +207,7 @@ import "lodash-es/set";
|
|
|
203
207
|
import "lodash-es/trimStart";
|
|
204
208
|
import "../../SynapseForm/SynapseFormSubmissionGrid.js";
|
|
205
209
|
import "../../SynapseChat/AccessLevelMenu.js";
|
|
210
|
+
import "react-draggable";
|
|
206
211
|
import "../../TimelinePlot/phasesQueryResponseData.js";
|
|
207
212
|
import "../../EntityHeaderTable/EntityHeaderTable.js";
|
|
208
213
|
import "../../MuiContainer.js";
|
|
@@ -212,7 +217,7 @@ import "../../PortalAclEditor/PortalAclEditor.js";
|
|
|
212
217
|
import "../../SynapseHomepageV2/HomepageStyles.js";
|
|
213
218
|
import { DownloadConfirmationUI as D } from "../DownloadConfirmationUI.js";
|
|
214
219
|
import { displayFilesWereAddedToDownloadListSuccess as L } from "../DownloadConfirmationUtils.js";
|
|
215
|
-
function
|
|
220
|
+
function qi(p) {
|
|
216
221
|
const { addToDownloadListRequest: t, onClose: o } = p, { downloadCartPageUrl: e } = u(), {
|
|
217
222
|
data: r,
|
|
218
223
|
isLoading: n,
|
|
@@ -241,6 +246,6 @@ function Li(p) {
|
|
|
241
246
|
);
|
|
242
247
|
}
|
|
243
248
|
export {
|
|
244
|
-
|
|
249
|
+
qi as default
|
|
245
250
|
};
|
|
246
251
|
//# sourceMappingURL=AddToDownloadListConfirmationAlert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddToDownloadListConfirmationAlert.js","sources":["../../../../src/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.tsx"],"sourcesContent":["import { displayToast } from '@/components/index'\nimport { ErrorBanner } from '@/components/error/ErrorBanner'\nimport {\n useAddToDownloadList,\n useGetAddToDownloadListStats,\n} from '@/synapse-queries/download/useDownloadList'\nimport { useSynapseContext } from '@/utils'\nimport { AddToDownloadListRequest } from '@sage-bionetworks/synapse-client'\nimport DownloadConfirmationUI from '../DownloadConfirmationUI'\nimport { displayFilesWereAddedToDownloadListSuccess } from '../DownloadConfirmationUtils'\n\nexport type AddToDownloadListConfirmationAlertProps = {\n /**\n * The \"AddToDownloadListRequest\" that would be used to add items to the download list.\n */\n addToDownloadListRequest: AddToDownloadListRequest\n /**\n * Invoked when the dialog is closed, either by cancelling or successfully adding to the download list.\n */\n onClose: () => void\n}\n\n/**\n * A component that displays a confirmation alert when adding multiple items to the download list though a container or\n * query.\n * @param props\n * @constructor\n */\nfunction AddToDownloadListConfirmationAlert(\n props: AddToDownloadListConfirmationAlertProps,\n) {\n const { addToDownloadListRequest, onClose } = props\n const { downloadCartPageUrl } = useSynapseContext()\n\n const {\n data,\n isLoading,\n error: statsError,\n } = useGetAddToDownloadListStats({\n concreteType:\n 'org.sagebionetworks.repo.model.download.AddToDownloadListStatsRequest',\n request: addToDownloadListRequest,\n })\n\n const { mutate: addToDownloadList, isPending: isAddingToDownloadCart } =\n useAddToDownloadList({\n onSuccess: () => {\n displayFilesWereAddedToDownloadListSuccess(downloadCartPageUrl)\n onClose()\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n onClose()\n },\n })\n\n const fileCount = data?.fileCount\n const fileSizeTotal = data?.fileSize\n\n if (statsError) {\n return <ErrorBanner error={statsError} />\n }\n\n return (\n <DownloadConfirmationUI\n onAddToDownloadCart={() => addToDownloadList(addToDownloadListRequest)}\n fileCount={fileCount}\n fileSize={fileSizeTotal}\n isAddingToDownloadCart={isAddingToDownloadCart}\n isLoadingStats={isLoading}\n onCancel={onClose}\n />\n )\n}\n\nexport default AddToDownloadListConfirmationAlert\n"],"names":["AddToDownloadListConfirmationAlert","props","addToDownloadListRequest","onClose","downloadCartPageUrl","useSynapseContext","data","isLoading","statsError","useGetAddToDownloadListStats","addToDownloadList","isAddingToDownloadCart","useAddToDownloadList","displayFilesWereAddedToDownloadListSuccess","error","displayToast","fileCount","fileSizeTotal","jsx","ErrorBanner","DownloadConfirmationUI"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddToDownloadListConfirmationAlert.js","sources":["../../../../src/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.tsx"],"sourcesContent":["import { displayToast } from '@/components/index'\nimport { ErrorBanner } from '@/components/error/ErrorBanner'\nimport {\n useAddToDownloadList,\n useGetAddToDownloadListStats,\n} from '@/synapse-queries/download/useDownloadList'\nimport { useSynapseContext } from '@/utils'\nimport { AddToDownloadListRequest } from '@sage-bionetworks/synapse-client'\nimport DownloadConfirmationUI from '../DownloadConfirmationUI'\nimport { displayFilesWereAddedToDownloadListSuccess } from '../DownloadConfirmationUtils'\n\nexport type AddToDownloadListConfirmationAlertProps = {\n /**\n * The \"AddToDownloadListRequest\" that would be used to add items to the download list.\n */\n addToDownloadListRequest: AddToDownloadListRequest\n /**\n * Invoked when the dialog is closed, either by cancelling or successfully adding to the download list.\n */\n onClose: () => void\n}\n\n/**\n * A component that displays a confirmation alert when adding multiple items to the download list though a container or\n * query.\n * @param props\n * @constructor\n */\nfunction AddToDownloadListConfirmationAlert(\n props: AddToDownloadListConfirmationAlertProps,\n) {\n const { addToDownloadListRequest, onClose } = props\n const { downloadCartPageUrl } = useSynapseContext()\n\n const {\n data,\n isLoading,\n error: statsError,\n } = useGetAddToDownloadListStats({\n concreteType:\n 'org.sagebionetworks.repo.model.download.AddToDownloadListStatsRequest',\n request: addToDownloadListRequest,\n })\n\n const { mutate: addToDownloadList, isPending: isAddingToDownloadCart } =\n useAddToDownloadList({\n onSuccess: () => {\n displayFilesWereAddedToDownloadListSuccess(downloadCartPageUrl)\n onClose()\n },\n onError: error => {\n displayToast(error.reason, 'danger')\n onClose()\n },\n })\n\n const fileCount = data?.fileCount\n const fileSizeTotal = data?.fileSize\n\n if (statsError) {\n return <ErrorBanner error={statsError} />\n }\n\n return (\n <DownloadConfirmationUI\n onAddToDownloadCart={() => addToDownloadList(addToDownloadListRequest)}\n fileCount={fileCount}\n fileSize={fileSizeTotal}\n isAddingToDownloadCart={isAddingToDownloadCart}\n isLoadingStats={isLoading}\n onCancel={onClose}\n />\n )\n}\n\nexport default AddToDownloadListConfirmationAlert\n"],"names":["AddToDownloadListConfirmationAlert","props","addToDownloadListRequest","onClose","downloadCartPageUrl","useSynapseContext","data","isLoading","statsError","useGetAddToDownloadListStats","addToDownloadList","isAddingToDownloadCart","useAddToDownloadList","displayFilesWereAddedToDownloadListSuccess","error","displayToast","fileCount","fileSizeTotal","jsx","ErrorBanner","DownloadConfirmationUI"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,SAASA,GACPC,GACA;AACA,QAAM,EAAE,0BAAAC,GAA0B,SAAAC,EAAA,IAAYF,GACxC,EAAE,qBAAAG,EAAA,IAAwBC,EAAA,GAE1B;AAAA,IACJ,MAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAOC;AAAA,EAAA,IACLC,EAA6B;AAAA,IAC/B,cACE;AAAA,IACF,SAASP;AAAA,EAAA,CACV,GAEK,EAAE,QAAQQ,GAAmB,WAAWC,EAAA,IAC5CC,EAAqB;AAAA,IACnB,WAAW,MAAM;AACf,MAAAC,EAA2CT,CAAmB,GAC9DD,EAAA;AAAA,IACF;AAAA,IACA,SAAS,CAAAW,MAAS;AAChB,MAAAC,EAAaD,EAAM,QAAQ,QAAQ,GACnCX,EAAA;AAAA,IACF;AAAA,EAAA,CACD,GAEGa,IAAYV,GAAM,WAClBW,IAAgBX,GAAM;AAE5B,SAAIE,IACK,gBAAAU,EAACC,GAAA,EAAY,OAAOX,EAAA,CAAY,IAIvC,gBAAAU;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,qBAAqB,MAAMV,EAAkBR,CAAwB;AAAA,MACrE,WAAAc;AAAA,MACA,UAAUC;AAAA,MACV,wBAAAN;AAAA,MACA,gBAAgBJ;AAAA,MAChB,UAAUJ;AAAA,IAAA;AAAA,EAAA;AAGhB;"}
|
|
@@ -8,7 +8,7 @@ export type DownloadConfirmationUIProps = {
|
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
10
|
* This component is used to display the download confirmation dialog that presents to a user the number of files and the
|
|
11
|
-
* total size of the files they are about to add to their download
|
|
11
|
+
* total size of the files they are about to add to their download list.
|
|
12
12
|
*/
|
|
13
13
|
export declare function DownloadConfirmationUI(props: DownloadConfirmationUIProps): import("react/jsx-runtime").JSX.Element;
|
|
14
14
|
export default DownloadConfirmationUI;
|