synapse-react-client 4.0.46 → 4.0.48
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/aridhia-queries/useSubmitAridhiaDar.js +2 -2
- package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js +3 -5
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +43 -30
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +6 -2
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js +101 -31
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +11 -9
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +24 -13
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js +2 -2
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
- package/dist/components/Authentication/TOTPForm.js +3 -3
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/index.d.ts +6 -6
- package/dist/components/Authentication/index.d.ts.map +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +7 -7
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverUtils.js +2 -2
- package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
- package/dist/components/CohortBuilder/CohortBuilder.css +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.d.ts +35 -0
- package/dist/components/CohortBuilder/CohortBuilder.d.ts.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.js +108 -0
- package/dist/components/CohortBuilder/CohortBuilder.js.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.js +10 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.js.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.scss +20 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.d.ts +16 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.d.ts.map +1 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.js +124 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.js.map +1 -0
- package/dist/components/CohortBuilder/cohortHandOff.d.ts +25 -0
- package/dist/components/CohortBuilder/cohortHandOff.d.ts.map +1 -0
- package/dist/components/CohortBuilder/cohortHandOff.js +26 -0
- package/dist/components/CohortBuilder/cohortHandOff.js.map +1 -0
- package/dist/components/ColumnFilter/ColumnFilter.d.ts.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js +14 -13
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +11 -2
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +115 -109
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/NumberColumn.js +1 -1
- package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts +20 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts.map +1 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.js +18 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.js.map +1 -0
- package/dist/components/DataGrid/components/contextMenu.js +3 -3
- package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js +9 -7
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.d.ts +1 -1
- package/dist/components/DataGrid/hooks/useStack.js +2 -2
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +47 -42
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js +7 -7
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js +2 -2
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +5 -5
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +4 -4
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
- package/dist/components/EntityHeaderTable/Filter.d.ts.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.d.ts.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +80 -84
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
- package/dist/components/FormTemplateEditor/StepCard.js +9 -9
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +2 -2
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.js +8 -8
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +1 -1
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js +1 -1
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +37 -37
- package/dist/components/GoalsV3/GoalsV3.js +1 -1
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.d.ts +3 -1
- package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid/HexGrid.js +14 -13
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IconSvg/index.d.ts +1 -1
- package/dist/components/IconSvg/index.d.ts.map +1 -1
- package/dist/components/IconSvg/index.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js +3 -3
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/Markdown/MarkdownEditor.js +1 -1
- package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
- package/dist/components/Markdown/widget/index.d.ts +1 -1
- package/dist/components/Markdown/widget/index.d.ts.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.d.ts.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js +2 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/Plot/BarPlot.js +1 -1
- package/dist/components/Plot/BarPlot.js.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.d.ts +3 -2
- package/dist/components/Plot/PlotPanelHeader.d.ts.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js +3 -3
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.js +28 -27
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.js +91 -75
- package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.js +91 -79
- package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js +11 -11
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +2 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +2 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderLimits.d.ts +18 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.js +38 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +0 -8
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderMetadata.js +6 -9
- package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +5 -4
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.js +58 -33
- package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.js +4 -4
- package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -1
- package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -1
- package/dist/components/QueryBuilder/useQBValueDisplayName.js +5 -5
- package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -1
- package/dist/components/QuerySortSelector.js +5 -5
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +21 -21
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts +20 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts.map +1 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js +50 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js.map +1 -0
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts +5 -3
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js +7 -3
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/downloadListFiles.d.ts +25 -0
- package/dist/components/QueryWrapper/downloadListFiles.d.ts.map +1 -0
- package/dist/components/QueryWrapper/downloadListFiles.js +39 -0
- package/dist/components/QueryWrapper/downloadListFiles.js.map +1 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts +16 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts.map +1 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js +50 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js.map +1 -0
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts +4 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts.map +1 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js +15 -28
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.js +7 -6
- package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.d.ts +3 -1
- package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js +26 -21
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +7 -7
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +2 -2
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +34 -32
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js +7 -7
- package/dist/components/QueryWrapperPlotNav/UseRowSet.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js +12 -12
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/RowDataTable/CategorizedRowDataTable.css +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts +33 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.js +64 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.js.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.js +8 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.js.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.scss +18 -0
- package/dist/components/RowDataTable/RowDataTable.d.ts +13 -0
- package/dist/components/RowDataTable/RowDataTable.d.ts.map +1 -1
- package/dist/components/RowDataTable/RowDataTable.js +25 -8
- package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.d.ts.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js +2 -2
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +17 -9
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +39 -30
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +24 -24
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
- package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseForm/NavButtons.js.map +1 -1
- package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js +3 -3
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +38 -44
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +4 -4
- package/dist/components/SynapseTable/SqlEditor.js +7 -7
- package/dist/components/SynapseTable/SynapseTable.js +8 -8
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js +73 -72
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +44 -45
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.d.ts.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +142 -142
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +4 -4
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +12 -12
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js +6 -6
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +0 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js +64 -57
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.d.ts.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js +3 -3
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +2 -2
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +60 -60
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js +1 -4
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/TotalQueryResults.js +14 -14
- package/dist/components/Webhook/WebhookDashboard.d.ts.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js +2 -2
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.d.ts +5 -1
- package/dist/components/download_list/DownloadConfirmationUtils.d.ts.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js +2 -2
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/error/ErrorBanner.d.ts.map +1 -1
- package/dist/components/error/ErrorBanner.js +49 -46
- package/dist/components/error/ErrorBanner.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js +5 -5
- package/dist/components/row_renderers/Dataset.d.ts.map +1 -1
- package/dist/components/row_renderers/Dataset.js +6 -6
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/row_renderers/Funder.js +1 -1
- package/dist/components/row_renderers/Funder.js.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.d.ts +6 -1
- package/dist/components/widgets/ElementWithTooltip.d.ts.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.js +22 -14
- package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.d.ts.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseImage.js +1 -1
- package/dist/components/widgets/SynapseImage.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +16 -5
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +115 -102
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js +4 -2
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts +2 -0
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +7 -0
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js +47 -45
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +4 -4
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts +3 -2
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js +16 -15
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js +4 -4
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +2 -2
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +62 -60
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +10 -10
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +2 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts +3 -2
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.d.ts +3 -2
- package/dist/components/widgets/query-filter/FacetFilterControls.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js +63 -62
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js +30 -29
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +5 -5
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts +53 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js +391 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts +41 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js +379 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts +26 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js +112 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js.map +1 -0
- package/dist/mocks/mockAnnotationColumns.d.ts.map +1 -1
- package/dist/mocks/mockAnnotationColumns.js +1 -1
- package/dist/mocks/mockAnnotationColumns.js.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +9 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +24 -15
- package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +21 -2
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js +30 -22
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts +27 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.js +158 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers/subscriptionHandlers.js +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js +2 -2
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/query/mockColumnCategoryTable.d.ts +19 -0
- package/dist/mocks/query/mockColumnCategoryTable.d.ts.map +1 -0
- package/dist/mocks/query/mockColumnCategoryTable.js +188 -0
- package/dist/mocks/query/mockColumnCategoryTable.js.map +1 -0
- package/dist/stories/ColorPaletteInspector.d.ts.map +1 -1
- package/dist/stories/ColorPaletteInspector.js +2 -2
- package/dist/stories/ColorPaletteInspector.js.map +1 -1
- package/dist/style/components/facet_nav/_facet-nav-panel.scss +8 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/auth/useOIDC.js +2 -2
- package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +2 -2
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -1
- package/dist/synapse-queries/challenge/useChallenge.js +2 -2
- package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.js +8 -8
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +10 -10
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js +24 -24
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js +4 -4
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js +6 -6
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useFormTemplate.js +4 -4
- package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
- package/dist/synapse-queries/download/index.js +2 -2
- package/dist/synapse-queries/download/useDownloadList.d.ts +5 -0
- package/dist/synapse-queries/download/useDownloadList.d.ts.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js +14 -13
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js +20 -20
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js +2 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.js +3 -2
- package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.js +2 -1
- package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js +4 -7
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js +6 -6
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.js +14 -14
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js +4 -4
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/index.js +177 -176
- package/dist/synapse-queries/oauth/useOAuthClient.js +9 -9
- package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
- package/dist/synapse-queries/portal/usePortal.js +7 -7
- package/dist/synapse-queries/portal/usePortal.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js +4 -4
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js +2 -2
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeam.js +2 -2
- package/dist/synapse-queries/team/useTeam.js.map +1 -1
- package/dist/synapse-queries/team/useTeamList.d.ts.map +1 -1
- package/dist/synapse-queries/team/useTeamList.js +3 -3
- package/dist/synapse-queries/team/useTeamList.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js +8 -8
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js +2 -2
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/trash/useTrashCan.js +4 -4
- package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
- package/dist/synapse-queries/user/useCertificationQuiz.js +2 -2
- package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
- package/dist/synapse-queries/user/useFavorites.js +4 -4
- package/dist/synapse-queries/user/useFavorites.js.map +1 -1
- package/dist/synapse-queries/user/useRevokeCertification.js +2 -2
- package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
- package/dist/synapse-queries/wiki/useWiki.js +10 -10
- package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/ContentTypeUtils.js +4 -4
- package/dist/utils/ContentTypeUtils.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
- package/dist/utils/context/DocumentMetadataContext.js +1 -1
- package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js +3 -3
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.js +2 -2
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/FileHandleUtils.js +1 -1
- package/dist/utils/functions/FileHandleUtils.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.js +1 -1
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/StringUtils.d.ts.map +1 -1
- package/dist/utils/functions/StringUtils.js +1 -2
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js +2 -2
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/enumerationFacet.d.ts +26 -0
- package/dist/utils/functions/enumerationFacet.d.ts.map +1 -0
- package/dist/utils/functions/enumerationFacet.js +27 -0
- package/dist/utils/functions/enumerationFacet.js.map +1 -0
- package/dist/utils/functions/facetCountUtils.d.ts +12 -0
- package/dist/utils/functions/facetCountUtils.d.ts.map +1 -0
- package/dist/utils/functions/facetCountUtils.js +9 -0
- package/dist/utils/functions/facetCountUtils.js.map +1 -0
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getUserData.js +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.d.ts +1 -1
- package/dist/utils/functions/queryUtils.d.ts.map +1 -1
- package/dist/utils/functions/queryUtils.js +26 -22
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.d.ts.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js +17 -26
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/functions/unCamelCase.js +1 -1
- package/dist/utils/functions/unCamelCase.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js +5 -5
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
- package/dist/utils/hooks/useLogin.d.ts.map +1 -1
- package/dist/utils/hooks/useLogin.js +5 -5
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +6 -0
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.js +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -1
- package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts +22 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts.map +1 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.js +39 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.js.map +1 -0
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts +1 -0
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts.map +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts +5 -0
- package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js +30 -15
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/dist/utils/jsonschema/submissionContext.js +2 -2
- package/dist/utils/jsonschema/submissionContext.js.map +1 -1
- package/package.json +4 -4
package/dist/SWC.index.js
CHANGED
|
@@ -117,7 +117,7 @@ var x = { BackendDestinationEnum: r }, S = {
|
|
|
117
117
|
sendSearchResultsReturnedEvent: y,
|
|
118
118
|
sendSearchResultReturnedEvent: v,
|
|
119
119
|
sendSearchResultClickedEvent: _
|
|
120
|
-
}, T = "4.0.
|
|
120
|
+
}, T = "4.0.48";
|
|
121
121
|
//#endregion
|
|
122
122
|
export { w as Analytics, a as HttpClient, d as Palettes, o as SynapseClient, C as SynapseComponents, n as SynapseConstants, S as SynapseContext, x as SynapseEnums, m as SynapseQueries, T as SynapseReactClientVersion, p as SynapseSessionManager, i as xssOptions };
|
|
123
123
|
|
|
@@ -27,8 +27,8 @@ function a(a) {
|
|
|
27
27
|
}
|
|
28
28
|
} }), {
|
|
29
29
|
...a,
|
|
30
|
-
onSuccess: (e, t, n) => {
|
|
31
|
-
c.invalidateQueries({ queryKey: s.requests() }), a?.onSuccess?.(e, t, n);
|
|
30
|
+
onSuccess: (e, t, n, ...r) => {
|
|
31
|
+
c.invalidateQueries({ queryKey: s.requests() }), a?.onSuccess?.(e, t, n, ...r);
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubmitAridhiaDar.js","names":[],"sources":["../../src/aridhia-queries/useSubmitAridhiaDar.ts"],"sourcesContent":["import { UseMutationOptions, useQueryClient } from '@tanstack/react-query'\nimport { RequestFull } from '@sage-bionetworks/aridhia-client/generated/models'\nimport { RequestsApi } from '@sage-bionetworks/aridhia-client/generated/apis'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { AridhiaKeyFactory } from './AridhiaKeyFactory'\nimport { AridhiaError, useAridhiaMutation } from './useAridhiaQuery'\nimport { TransferType } from './TransferType'\n\nexport type SubmitAridhiaDarVariables = {\n code: string\n name: string\n /** Flat answer map (About ∪ Project ∪ Workspace-when-requested), minus `name` and `code`. */\n fields: Record<string, unknown>\n transferType: TransferType\n workspaceRequested: boolean\n /** Required when `workspaceRequested` is true — RDCA-DAP's \"Reference\" field, sent as\n * `RequestPost.workspace_reference`. Unused when picking an existing workspace. */\n workspaceReference?: string\n /** Required when `workspaceRequested` is false — the chosen existing workspace. */\n workspaceUuid?: string\n selectedDictionaries: { code: string; name?: string }[]\n}\n\n/**\n * Submits a data access request to `POST /fair/requests/`. On success, invalidates the requests\n * list so the dataset table's access icon updates without a manual reload.\n */\nexport function useSubmitAridhiaDar(\n options?: Partial<\n UseMutationOptions<RequestFull, AridhiaError, SubmitAridhiaDarVariables>\n >,\n) {\n const { accessToken: synapseAccessToken } = useSynapseContext()\n const keyFactory = new AridhiaKeyFactory(synapseAccessToken)\n const queryClient = useQueryClient()\n\n return useAridhiaMutation<RequestFull, SubmitAridhiaDarVariables>(\n async (configuration, variables) => {\n const requestsApi = new RequestsApi(configuration)\n return await requestsApi.fairRequestsPost({\n requestPost: {\n code: variables.code,\n name: variables.name,\n fields: variables.fields,\n terms: true,\n transfer_type: variables.transferType,\n workspace_requested: variables.workspaceRequested,\n ...(variables.workspaceRequested\n ? { workspace_reference: variables.workspaceReference }\n : { workspace_uuid: variables.workspaceUuid }),\n cohort: {\n name: variables.name,\n queries: [\n {\n name: variables.name,\n clauses: variables.selectedDictionaries.map(dictionary => ({\n name: dictionary.name ?? dictionary.code,\n dictionary: { code: dictionary.code },\n filters: [], // empty = the whole table\n })),\n },\n ],\n },\n },\n })\n },\n {\n ...options,\n onSuccess: (data, variables, context) => {\n queryClient.invalidateQueries({ queryKey: keyFactory.requests() })\n options?.onSuccess?.(data, variables, context)\n },\n },\n )\n}\n"],"mappings":";;;;;;AA2BA,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,aAAa,MAAuB,EAAkB,GACxD,IAAa,IAAI,EAAkB,CAAkB,GACrD,IAAc,EAAe;CAEnC,OAAO,EACL,OAAO,GAAe,MAEb,MAAM,IADW,EAAY,CACvB,EAAY,iBAAiB,EACxC,aAAa;EACX,MAAM,EAAU;EAChB,MAAM,EAAU;EAChB,QAAQ,EAAU;EAClB,OAAO;EACP,eAAe,EAAU;EACzB,qBAAqB,EAAU;EAC/B,GAAI,EAAU,qBACV,EAAE,qBAAqB,EAAU,mBAAmB,IACpD,EAAE,gBAAgB,EAAU,cAAc;EAC9C,QAAQ;GACN,MAAM,EAAU;GAChB,SAAS,CACP;IACE,MAAM,EAAU;IAChB,SAAS,EAAU,qBAAqB,KAAI,OAAe;KACzD,MAAM,EAAW,QAAQ,EAAW;KACpC,YAAY,EAAE,MAAM,EAAW,KAAK;KACpC,SAAS,CAAC;IACZ,EAAE;GACJ,CACF;EACF;CACF,EACF,CAAC,GAEH;EACE,GAAG;EACH,YAAY,GAAM,GAAW,
|
|
1
|
+
{"version":3,"file":"useSubmitAridhiaDar.js","names":[],"sources":["../../src/aridhia-queries/useSubmitAridhiaDar.ts"],"sourcesContent":["import { UseMutationOptions, useQueryClient } from '@tanstack/react-query'\nimport { RequestFull } from '@sage-bionetworks/aridhia-client/generated/models'\nimport { RequestsApi } from '@sage-bionetworks/aridhia-client/generated/apis'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { AridhiaKeyFactory } from './AridhiaKeyFactory'\nimport { AridhiaError, useAridhiaMutation } from './useAridhiaQuery'\nimport { TransferType } from './TransferType'\n\nexport type SubmitAridhiaDarVariables = {\n code: string\n name: string\n /** Flat answer map (About ∪ Project ∪ Workspace-when-requested), minus `name` and `code`. */\n fields: Record<string, unknown>\n transferType: TransferType\n workspaceRequested: boolean\n /** Required when `workspaceRequested` is true — RDCA-DAP's \"Reference\" field, sent as\n * `RequestPost.workspace_reference`. Unused when picking an existing workspace. */\n workspaceReference?: string\n /** Required when `workspaceRequested` is false — the chosen existing workspace. */\n workspaceUuid?: string\n selectedDictionaries: { code: string; name?: string }[]\n}\n\n/**\n * Submits a data access request to `POST /fair/requests/`. On success, invalidates the requests\n * list so the dataset table's access icon updates without a manual reload.\n */\nexport function useSubmitAridhiaDar(\n options?: Partial<\n UseMutationOptions<RequestFull, AridhiaError, SubmitAridhiaDarVariables>\n >,\n) {\n const { accessToken: synapseAccessToken } = useSynapseContext()\n const keyFactory = new AridhiaKeyFactory(synapseAccessToken)\n const queryClient = useQueryClient()\n\n return useAridhiaMutation<RequestFull, SubmitAridhiaDarVariables>(\n async (configuration, variables) => {\n const requestsApi = new RequestsApi(configuration)\n return await requestsApi.fairRequestsPost({\n requestPost: {\n code: variables.code,\n name: variables.name,\n fields: variables.fields,\n terms: true,\n transfer_type: variables.transferType,\n workspace_requested: variables.workspaceRequested,\n ...(variables.workspaceRequested\n ? { workspace_reference: variables.workspaceReference }\n : { workspace_uuid: variables.workspaceUuid }),\n cohort: {\n name: variables.name,\n queries: [\n {\n name: variables.name,\n clauses: variables.selectedDictionaries.map(dictionary => ({\n name: dictionary.name ?? dictionary.code,\n dictionary: { code: dictionary.code },\n filters: [], // empty = the whole table\n })),\n },\n ],\n },\n },\n })\n },\n {\n ...options,\n onSuccess: (data, variables, context, ...rest) => {\n queryClient.invalidateQueries({ queryKey: keyFactory.requests() })\n options?.onSuccess?.(data, variables, context, ...rest)\n },\n },\n )\n}\n"],"mappings":";;;;;;AA2BA,SAAgB,EACd,GAGA;CACA,IAAM,EAAE,aAAa,MAAuB,EAAkB,GACxD,IAAa,IAAI,EAAkB,CAAkB,GACrD,IAAc,EAAe;CAEnC,OAAO,EACL,OAAO,GAAe,MAEb,MAAM,IADW,EAAY,CACvB,EAAY,iBAAiB,EACxC,aAAa;EACX,MAAM,EAAU;EAChB,MAAM,EAAU;EAChB,QAAQ,EAAU;EAClB,OAAO;EACP,eAAe,EAAU;EACzB,qBAAqB,EAAU;EAC/B,GAAI,EAAU,qBACV,EAAE,qBAAqB,EAAU,mBAAmB,IACpD,EAAE,gBAAgB,EAAU,cAAc;EAC9C,QAAQ;GACN,MAAM,EAAU;GAChB,SAAS,CACP;IACE,MAAM,EAAU;IAChB,SAAS,EAAU,qBAAqB,KAAI,OAAe;KACzD,MAAM,EAAW,QAAQ,EAAW;KACpC,YAAY,EAAE,MAAM,EAAW,KAAK;KACpC,SAAS,CAAC;IACZ,EAAE;GACJ,CACF;EACF;CACF,EACF,CAAC,GAEH;EACE,GAAG;EACH,YAAY,GAAM,GAAW,GAAS,GAAG,MAAS;GAEhD,AADA,EAAY,kBAAkB,EAAE,UAAU,EAAW,SAAS,EAAE,CAAC,GACjE,GAAS,YAAY,GAAM,GAAW,GAAS,GAAG,CAAI;EACxD;CACF,CACF;AACF"}
|
|
@@ -14,7 +14,7 @@ var g = "You must provide a token name and at least one permission.";
|
|
|
14
14
|
function _(_) {
|
|
15
15
|
let { onClose: v = s, onCreate: y = s } = _, [b, x] = o(""), [S, C] = o(!0), [w, T] = o(!1), [E, D] = o(!1), [O, k] = o(null), { mutate: A, isPending: j, error: M, data: N } = r(), P = (e) => {
|
|
16
16
|
x(e.target.value);
|
|
17
|
-
}, F = (e, t) => !!e && t.some(
|
|
17
|
+
}, F = (e, t) => !!e && t.some(Boolean), I = () => {
|
|
18
18
|
if (F(b, [
|
|
19
19
|
S,
|
|
20
20
|
w,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateAccessTokenModal.js","names":[],"sources":["../../../src/components/AccessTokenPage/CreateAccessTokenModal.tsx"],"sourcesContent":["import { useCreatePersonalAccessToken } from '@/synapse-queries/user/usePersonalAccessToken'\nimport { Checkbox, FormControlLabel, Stack, Typography } from '@mui/material'\nimport {\n AccessTokenGenerationRequest,\n scopeDescriptions,\n} from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { ChangeEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { CopyToClipboardInput } from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport TextField from '../TextField/TextField'\n\nconst INVALID_INPUT_MSG =\n 'You must provide a token name and at least one permission.'\n\nexport type CreateAccessTokenModalProps = {\n onClose?: () => void\n onCreate?: () => void\n}\n\nexport function CreateAccessTokenModal(props: CreateAccessTokenModalProps) {\n const { onClose = noop, onCreate = noop } = props\n const [tokenName, setTokenName] = useState('')\n const [viewAccess, setViewAccess] = useState(true)\n const [downloadAccess, setDownloadAccess] = useState(false)\n const [modifyAccess, setModifyAccess] = useState(false)\n\n const [validationError, setValidationError] = useState<string | null>(null)\n\n const {\n mutate,\n isPending: createIsPending,\n error: mutationError,\n data: createdTokenResponse,\n } = useCreatePersonalAccessToken()\n\n const handleTokenNameChange = (event: ChangeEvent) => {\n setTokenName((event.target as HTMLInputElement).value)\n }\n\n const validateInput = (tokenName: string, access: boolean[]): boolean => {\n return !!tokenName && access.some(
|
|
1
|
+
{"version":3,"file":"CreateAccessTokenModal.js","names":[],"sources":["../../../src/components/AccessTokenPage/CreateAccessTokenModal.tsx"],"sourcesContent":["import { useCreatePersonalAccessToken } from '@/synapse-queries/user/usePersonalAccessToken'\nimport { Checkbox, FormControlLabel, Stack, Typography } from '@mui/material'\nimport {\n AccessTokenGenerationRequest,\n scopeDescriptions,\n} from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { ChangeEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { CopyToClipboardInput } from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport TextField from '../TextField/TextField'\n\nconst INVALID_INPUT_MSG =\n 'You must provide a token name and at least one permission.'\n\nexport type CreateAccessTokenModalProps = {\n onClose?: () => void\n onCreate?: () => void\n}\n\nexport function CreateAccessTokenModal(props: CreateAccessTokenModalProps) {\n const { onClose = noop, onCreate = noop } = props\n const [tokenName, setTokenName] = useState('')\n const [viewAccess, setViewAccess] = useState(true)\n const [downloadAccess, setDownloadAccess] = useState(false)\n const [modifyAccess, setModifyAccess] = useState(false)\n\n const [validationError, setValidationError] = useState<string | null>(null)\n\n const {\n mutate,\n isPending: createIsPending,\n error: mutationError,\n data: createdTokenResponse,\n } = useCreatePersonalAccessToken()\n\n const handleTokenNameChange = (event: ChangeEvent) => {\n setTokenName((event.target as HTMLInputElement).value)\n }\n\n const validateInput = (tokenName: string, access: boolean[]): boolean => {\n return !!tokenName && access.some(Boolean)\n }\n\n const onSubmit = () => {\n if (validateInput(tokenName, [viewAccess, downloadAccess, modifyAccess])) {\n setValidationError(null)\n\n const request: AccessTokenGenerationRequest = {\n scope: [],\n name: tokenName,\n }\n if (viewAccess) request.scope.push('view')\n if (downloadAccess) request.scope.push('download')\n if (modifyAccess) request.scope.push('modify')\n\n mutate(request)\n\n onCreate()\n } else {\n setValidationError(INVALID_INPUT_MSG)\n }\n }\n\n const dialogContent = createdTokenResponse ? (\n <>\n <Typography variant={'body1'}>\n <Typography\n variant={'body1'}\n component={'span'}\n sx={{\n fontWeight: 700,\n }}\n >\n This token will not be able to be retrieved again.\n </Typography>{' '}\n If needed, generate a new personal access token, and delete this one.\n </Typography>\n <div>\n <CopyToClipboardInput\n value={createdTokenResponse.token}\n inputWidth={'350px'}\n />\n </div>\n <Typography variant={'body1'}>\n This token grants access to your account functions and should be treated\n like a password.\n </Typography>\n </>\n ) : (\n <Stack gap={2}>\n <TextField\n autoFocus\n label=\"Token Name\"\n value={tokenName}\n onChange={handleTokenNameChange}\n placeholder=\"e.g. Synapse command line access on my laptop\"\n sx={{ mb: 2 }}\n />\n <div>\n <Typography variant=\"label\">Token Permissions</Typography>\n <Stack\n sx={{\n gap: 2,\n my: 1,\n }}\n >\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.view.displayName}\n checked={viewAccess}\n onChange={() => setViewAccess(!viewAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.view.description}. Required to use Synapse\n programmatic clients.\n </Typography>\n </div>\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.download.displayName}\n checked={downloadAccess}\n onChange={() => setDownloadAccess(!downloadAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.download.description}\n </Typography>\n </div>\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.modify.displayName}\n checked={modifyAccess}\n onChange={() => setModifyAccess(!modifyAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.modify.description}\n </Typography>\n </div>\n </Stack>\n </div>\n {validationError && <ErrorBanner error={validationError} />}\n {mutationError && <ErrorBanner error={mutationError.reason} />}\n </Stack>\n )\n\n return (\n <ConfirmationDialog\n open={true}\n title=\"Create New Personal Access Token\"\n content={createIsPending ? loadingScreen : dialogContent}\n confirmButtonProps={{\n children: createdTokenResponse ? 'Close' : 'Create Token',\n variant: createdTokenResponse ? 'outlined' : 'contained',\n }}\n hasCancelButton={!createdTokenResponse}\n onCancel={onClose}\n onConfirm={\n createdTokenResponse\n ? () => onClose()\n : () => {\n void onSubmit()\n }\n }\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;AAcA,IAAM,IACJ;AAOF,SAAgB,EAAuB,GAAoC;CACzE,IAAM,EAAE,aAAU,GAAM,cAAW,MAAS,GACtC,CAAC,GAAW,KAAgB,EAAS,EAAE,GACvC,CAAC,GAAY,KAAiB,EAAS,EAAI,GAC3C,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,CAAC,GAAc,KAAmB,EAAS,EAAK,GAEhD,CAAC,GAAiB,KAAsB,EAAwB,IAAI,GAEpE,EACJ,WACA,WAAW,GACX,OAAO,GACP,MAAM,MACJ,EAA6B,GAE3B,KAAyB,MAAuB;EACpD,EAAc,EAAM,OAA4B,KAAK;CACvD,GAEM,KAAiB,GAAmB,MACjC,CAAC,CAAC,KAAa,EAAO,KAAK,OAAO,GAGrC,UAAiB;EACrB,IAAI,EAAc,GAAW;GAAC;GAAY;GAAgB;EAAY,CAAC,GAAG;GACxE,EAAmB,IAAI;GAEvB,IAAM,IAAwC;IAC5C,OAAO,CAAC;IACR,MAAM;GACR;GAOA,AANI,KAAY,EAAQ,MAAM,KAAK,MAAM,GACrC,KAAgB,EAAQ,MAAM,KAAK,UAAU,GAC7C,KAAc,EAAQ,MAAM,KAAK,QAAQ,GAE7C,EAAO,CAAO,GAEd,EAAS;EACX,OACE,EAAmB,CAAiB;CAExC,GAEM,IAAgB,IACpB,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAY,SAAS;aAArB;IACE,kBAAC,GAAD;KACE,SAAS;KACT,WAAW;KACX,IAAI,EACF,YAAY,IACd;eACD;IAEW,CAAA;IAAE;IAAI;GAER;;EACZ,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;GACE,OAAO,EAAqB;GAC5B,YAAY;EACb,CAAA,EACE,CAAA;EACL,kBAAC,GAAD;GAAY,SAAS;aAAS;EAGlB,CAAA;CACZ,EAAA,CAAA,IAEF,kBAAC,GAAD;EAAO,KAAK;YAAZ;GACE,kBAAC,GAAD;IACE,WAAA;IACA,OAAM;IACN,OAAO;IACP,UAAU;IACV,aAAY;IACZ,IAAI,EAAE,IAAI,EAAE;GACb,CAAA;GACD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IAAY,SAAQ;cAAQ;GAA6B,CAAA,GACzD,kBAAC,GAAD;IACE,IAAI;KACF,KAAK;KACL,IAAI;IACN;cAJF;KAME,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MACE,SAAS,kBAAC,GAAD,CAAW,CAAA;MACpB,OAAO,EAAkB,KAAK;MAC9B,SAAS;MACT,gBAAgB,EAAc,CAAC,CAAU;KAC1C,CAAA,GACD,kBAAC,GAAD;MACE,SAAS;MACT,IAAI,EACF,OAAO,WACT;gBAJF,CAMG,EAAkB,KAAK,aAAY,iDAE1B;OACT,EAAA,CAAA;KACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MACE,SAAS,kBAAC,GAAD,CAAW,CAAA;MACpB,OAAO,EAAkB,SAAS;MAClC,SAAS;MACT,gBAAgB,EAAkB,CAAC,CAAc;KAClD,CAAA,GACD,kBAAC,GAAD;MACE,SAAS;MACT,IAAI,EACF,OAAO,WACT;gBAEC,EAAkB,SAAS;KAClB,CAAA,CACT,EAAA,CAAA;KACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MACE,SAAS,kBAAC,GAAD,CAAW,CAAA;MACpB,OAAO,EAAkB,OAAO;MAChC,SAAS;MACT,gBAAgB,EAAgB,CAAC,CAAY;KAC9C,CAAA,GACD,kBAAC,GAAD;MACE,SAAS;MACT,IAAI,EACF,OAAO,WACT;gBAEC,EAAkB,OAAO;KAChB,CAAA,CACT,EAAA,CAAA;IACA;KACJ,EAAA,CAAA;GACJ,KAAmB,kBAAC,GAAD,EAAa,OAAO,EAAkB,CAAA;GACzD,KAAiB,kBAAC,GAAD,EAAa,OAAO,EAAc,OAAS,CAAA;EACxD;;CAGT,OACE,kBAAC,GAAD;EACE,MAAM;EACN,OAAM;EACN,SAAS,IAAkB,IAAgB;EAC3C,oBAAoB;GAClB,UAAU,IAAuB,UAAU;GAC3C,SAAS,IAAuB,aAAa;EAC/C;EACA,iBAAiB,CAAC;EAClB,UAAU;EACV,WACE,UACU,EAAQ,UACR;GACJ,EAAc;EAChB;CAEP,CAAA;AAEL"}
|
|
@@ -15,7 +15,7 @@ function u({ userId: u }) {
|
|
|
15
15
|
certified: d?.isCertified || !1,
|
|
16
16
|
validated: d?.isVerified || !1,
|
|
17
17
|
enabledMFA: d?.userProfile?.twoFactorAuthEnabled || !1
|
|
18
|
-
}, h = Object.values(m).some(
|
|
18
|
+
}, h = Object.values(m).some(Boolean), { showButton: g, buttonProps: _, confirmationDialogProps: v } = i({
|
|
19
19
|
userId: u,
|
|
20
20
|
buttonProps: { variant: "outlined" }
|
|
21
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountLevelBadges.js","names":[],"sources":["../../../src/components/AccountLevelBadges/AccountLevelBadges.tsx"],"sourcesContent":["import { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { Box } from '@mui/material'\nimport {\n AccountLevelBadge,\n AccountLevelBadgeType,\n} from '../AccountLevelBadge/AccountLevelBadge'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport useRevokeCertificationUI from './useRevokeCertificationUI'\n\nexport type AccountLevelBadgesProps = {\n userId: string\n}\n\nconst CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK =\n SynapseConstants.USER_BUNDLE_MASK_IS_CERTIFIED |\n SynapseConstants.USER_BUNDLE_MASK_IS_VERIFIED |\n SynapseConstants.USER_BUNDLE_MASK_USER_PROFILE\n\nexport function AccountLevelBadges({ userId }: AccountLevelBadgesProps) {\n const {\n data: userBundle,\n isLoading,\n error,\n } = useGetUserBundle(\n userId,\n CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK,\n )\n\n const badgeStatuses: Record<AccountLevelBadgeType, boolean> = {\n certified: userBundle?.isCertified || false,\n validated: userBundle?.isVerified || false,\n enabledMFA: userBundle?.userProfile?.twoFactorAuthEnabled || false,\n }\n const hasBadges = Object.values(badgeStatuses).some(
|
|
1
|
+
{"version":3,"file":"AccountLevelBadges.js","names":[],"sources":["../../../src/components/AccountLevelBadges/AccountLevelBadges.tsx"],"sourcesContent":["import { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { Box } from '@mui/material'\nimport {\n AccountLevelBadge,\n AccountLevelBadgeType,\n} from '../AccountLevelBadge/AccountLevelBadge'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport useRevokeCertificationUI from './useRevokeCertificationUI'\n\nexport type AccountLevelBadgesProps = {\n userId: string\n}\n\nconst CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK =\n SynapseConstants.USER_BUNDLE_MASK_IS_CERTIFIED |\n SynapseConstants.USER_BUNDLE_MASK_IS_VERIFIED |\n SynapseConstants.USER_BUNDLE_MASK_USER_PROFILE\n\nexport function AccountLevelBadges({ userId }: AccountLevelBadgesProps) {\n const {\n data: userBundle,\n isLoading,\n error,\n } = useGetUserBundle(\n userId,\n CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK,\n )\n\n const badgeStatuses: Record<AccountLevelBadgeType, boolean> = {\n certified: userBundle?.isCertified || false,\n validated: userBundle?.isVerified || false,\n enabledMFA: userBundle?.userProfile?.twoFactorAuthEnabled || false,\n }\n const hasBadges = Object.values(badgeStatuses).some(Boolean)\n\n const {\n showButton: showRevokeCertificationButton,\n buttonProps: revokeCertificationButtonProps,\n confirmationDialogProps: revokeCertificationConfirmationDialogProps,\n } = useRevokeCertificationUI({\n userId,\n buttonProps: {\n variant: 'outlined',\n },\n })\n\n if (isLoading) {\n return <></>\n }\n if (error) {\n return <ErrorBanner error={error} />\n }\n\n return (\n <>\n <ConfirmationDialog {...revokeCertificationConfirmationDialogProps} />\n {hasBadges && (\n <Box\n sx={{\n display: 'flex',\n gap: '10px',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n }}\n >\n {Object.entries(badgeStatuses).map(([key, value]) => {\n const badgeType = key as AccountLevelBadgeType\n const buttonProps =\n badgeType === 'certified' && showRevokeCertificationButton\n ? revokeCertificationButtonProps\n : undefined\n return (\n value && (\n <AccountLevelBadge\n key={badgeType}\n badgeType={badgeType}\n buttonProps={buttonProps}\n />\n )\n )\n })}\n </Box>\n )}\n </>\n )\n}\n\nexport default AccountLevelBadges\n"],"mappings":";;;;;;;;;;;AAeA,IAAM,IACJ;AAIF,SAAgB,EAAmB,EAAE,aAAmC;CACtE,IAAM,EACJ,MAAM,GACN,cACA,aACE,EACF,GACA,CACF,GAEM,IAAwD;EAC5D,WAAW,GAAY,eAAe;EACtC,WAAW,GAAY,cAAc;EACrC,YAAY,GAAY,aAAa,wBAAwB;CAC/D,GACM,IAAY,OAAO,OAAO,CAAa,EAAE,KAAK,OAAO,GAErD,EACJ,YAAY,GACZ,aAAa,GACb,yBAAyB,MACvB,EAAyB;EAC3B;EACA,aAAa,EACX,SAAS,WACX;CACF,CAAC;CASD,OAPI,IACK,kBAAA,GAAA,CAAI,CAAA,IAET,IACK,kBAAC,GAAD,EAAoB,SAAQ,CAAA,IAInC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAoB,GAAI,EAA6C,CAAA,GACpE,KACC,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,KAAK;GACL,gBAAgB;GAChB,UAAU;EACZ;YAEC,OAAO,QAAQ,CAAa,EAAE,KAAK,CAAC,GAAK,OAAW;GACnD,IAAM,IAAY;GAKlB,OACE,KACE,kBAAC,GAAD;IAEa;IACE,aARjB,MAAc,eAAe,IACzB,IACA,KAAA;GAOD,GAHM,CAGN;EAGP,CAAC;CACE,CAAA,CAEP,EAAA,CAAA;AAEN"}
|
|
@@ -44,9 +44,7 @@ async function m(e, t) {
|
|
|
44
44
|
let n = p();
|
|
45
45
|
expect(n).toBeInTheDocument(), await e.clear(n), await e.type(n, t);
|
|
46
46
|
let r = await a.findByText(RegExp(`\\(@${t}\\)`));
|
|
47
|
-
await e.click(r), await o(() => expect(r).not.toBeInTheDocument());
|
|
48
|
-
let i = a.getAllByRole("row");
|
|
49
|
-
return i[i.length - 1];
|
|
47
|
+
return await e.click(r), await o(() => expect(r).not.toBeInTheDocument()), a.getAllByRole("row").at(-1);
|
|
50
48
|
}
|
|
51
49
|
async function h(n) {
|
|
52
50
|
let r = a.getByRole("button", { name: i });
|
|
@@ -55,8 +53,8 @@ async function h(n) {
|
|
|
55
53
|
return await o(() => {
|
|
56
54
|
s = a.getAllByRole("row"), l = c(s, t), u = c(s, e), expect(l).toBeInTheDocument(), expect(u).toBeInTheDocument();
|
|
57
55
|
}), {
|
|
58
|
-
publicRow: s
|
|
59
|
-
authenticatedUsersRow: s
|
|
56
|
+
publicRow: s.at(-2),
|
|
57
|
+
authenticatedUsersRow: s.at(-1)
|
|
60
58
|
};
|
|
61
59
|
}
|
|
62
60
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AclEditor.test-utils.js","names":[],"sources":["../../../src/components/AclEditor/AclEditor.test-utils.ts"],"sourcesContent":["import userEvent from '@testing-library/user-event'\nimport { screen, waitFor, within } from '@testing-library/react'\nimport { REMOVE_BUTTON_LABEL } from './ResourceAccessItem'\nimport {\n AUTHENTICATED_GROUP_DISPLAY_TEXT,\n PUBLIC_GROUP_DISPLAY_TEXT,\n} from '../TeamBadge'\nimport {\n ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n ADD_PUBLIC_PRINCIPALS_BUTTON_TEXT,\n} from './AclEditor'\n\n/**\n * Find a row in the ACL editor that contains the specified principal name.\n * @param rows\n * @param principalName\n */\nexport function queryForRowWithPrincipalName(\n rows: HTMLElement[],\n principalName: string,\n) {\n return rows.find(row => {\n return within(row).queryByText(principalName, { exact: false })\n })\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param rows\n * @param principalName\n * @param accessTypeLabel\n */\nexport async function confirmItemViaQuery(\n rows: HTMLElement[],\n principalName: string,\n accessTypeLabel: string,\n) {\n let row: HTMLElement | undefined\n try {\n await waitFor(() => {\n row = queryForRowWithPrincipalName(rows, principalName)!\n expect(row).toBeInTheDocument()\n })\n } catch (e) {\n screen.debug()\n throw new Error(`Principal ${principalName} not found in ACL`, { cause: e })\n }\n\n const editorCombobox = within(row!).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row!).getByText(accessTypeLabel)\n }\n return row!\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param row\n * @param principalName\n * @param accessTypeLabel\n */\nexport function confirmItem(\n row: HTMLElement,\n principalName: string,\n accessTypeLabel: string,\n) {\n expect(within(row).queryByRole('link') ?? row).toHaveTextContent(\n principalName,\n )\n const editorCombobox = within(row).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row).getByText(accessTypeLabel)\n }\n}\n\n/**\n * Remove a particular row from the HTML editor.\n * @param row\n * @param user\n * @param verifyRemoval\n */\nexport async function removeItem(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n verifyRemoval = true,\n) {\n const removeButton = within(row).getByRole('button', {\n name: REMOVE_BUTTON_LABEL,\n })\n await user.click(removeButton)\n if (verifyRemoval) {\n await waitFor(() => {\n expect(removeButton).not.toBeInTheDocument()\n expect(row).not.toBeInTheDocument()\n })\n }\n}\n\n/**\n * Updates the permission level of a particular row in the ACL editor.\n * @param row\n * @param user\n * @param updatedPermissionLevelLabel\n */\nexport async function updatePermissionLevel(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n updatedPermissionLevelLabel: string,\n) {\n const menu = within(row).getByRole('combobox')\n await user.click(menu)\n\n const option = screen.getByRole('option', {\n name: updatedPermissionLevelLabel,\n })\n await user.click(option)\n\n await waitFor(() => {\n expect(option).not.toBeInTheDocument()\n })\n}\n\nexport function queryForAddUserCombobox() {\n return screen.queryByRole('combobox', {\n name: ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n })\n}\n\n/**\n * Adds a user to the ACL editor.\n * @param user\n * @param userName\n */\nexport async function addUserToAcl(\n user: ReturnType<(typeof userEvent)['setup']>,\n userName: string,\n) {\n const userInput = queryForAddUserCombobox()!\n expect(userInput).toBeInTheDocument()\n await user.clear(userInput)\n await user.type(userInput, userName)\n\n const option = await screen.findByText(new RegExp(`\\\\(@${userName}\\\\)`))\n await user.click(option)\n\n await waitFor(() => expect(option).not.toBeInTheDocument())\n const rows = screen.getAllByRole('row')\n return rows
|
|
1
|
+
{"version":3,"file":"AclEditor.test-utils.js","names":[],"sources":["../../../src/components/AclEditor/AclEditor.test-utils.ts"],"sourcesContent":["import userEvent from '@testing-library/user-event'\nimport { screen, waitFor, within } from '@testing-library/react'\nimport { REMOVE_BUTTON_LABEL } from './ResourceAccessItem'\nimport {\n AUTHENTICATED_GROUP_DISPLAY_TEXT,\n PUBLIC_GROUP_DISPLAY_TEXT,\n} from '../TeamBadge'\nimport {\n ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n ADD_PUBLIC_PRINCIPALS_BUTTON_TEXT,\n} from './AclEditor'\n\n/**\n * Find a row in the ACL editor that contains the specified principal name.\n * @param rows\n * @param principalName\n */\nexport function queryForRowWithPrincipalName(\n rows: HTMLElement[],\n principalName: string,\n) {\n return rows.find(row => {\n return within(row).queryByText(principalName, { exact: false })\n })\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param rows\n * @param principalName\n * @param accessTypeLabel\n */\nexport async function confirmItemViaQuery(\n rows: HTMLElement[],\n principalName: string,\n accessTypeLabel: string,\n) {\n let row: HTMLElement | undefined\n try {\n await waitFor(() => {\n row = queryForRowWithPrincipalName(rows, principalName)!\n expect(row).toBeInTheDocument()\n })\n } catch (e) {\n screen.debug()\n throw new Error(`Principal ${principalName} not found in ACL`, { cause: e })\n }\n\n const editorCombobox = within(row!).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row!).getByText(accessTypeLabel)\n }\n return row!\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param row\n * @param principalName\n * @param accessTypeLabel\n */\nexport function confirmItem(\n row: HTMLElement,\n principalName: string,\n accessTypeLabel: string,\n) {\n expect(within(row).queryByRole('link') ?? row).toHaveTextContent(\n principalName,\n )\n const editorCombobox = within(row).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row).getByText(accessTypeLabel)\n }\n}\n\n/**\n * Remove a particular row from the HTML editor.\n * @param row\n * @param user\n * @param verifyRemoval\n */\nexport async function removeItem(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n verifyRemoval = true,\n) {\n const removeButton = within(row).getByRole('button', {\n name: REMOVE_BUTTON_LABEL,\n })\n await user.click(removeButton)\n if (verifyRemoval) {\n await waitFor(() => {\n expect(removeButton).not.toBeInTheDocument()\n expect(row).not.toBeInTheDocument()\n })\n }\n}\n\n/**\n * Updates the permission level of a particular row in the ACL editor.\n * @param row\n * @param user\n * @param updatedPermissionLevelLabel\n */\nexport async function updatePermissionLevel(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n updatedPermissionLevelLabel: string,\n) {\n const menu = within(row).getByRole('combobox')\n await user.click(menu)\n\n const option = screen.getByRole('option', {\n name: updatedPermissionLevelLabel,\n })\n await user.click(option)\n\n await waitFor(() => {\n expect(option).not.toBeInTheDocument()\n })\n}\n\nexport function queryForAddUserCombobox() {\n return screen.queryByRole('combobox', {\n name: ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n })\n}\n\n/**\n * Adds a user to the ACL editor.\n * @param user\n * @param userName\n */\nexport async function addUserToAcl(\n user: ReturnType<(typeof userEvent)['setup']>,\n userName: string,\n) {\n const userInput = queryForAddUserCombobox()!\n expect(userInput).toBeInTheDocument()\n await user.clear(userInput)\n await user.type(userInput, userName)\n\n const option = await screen.findByText(new RegExp(`\\\\(@${userName}\\\\)`))\n await user.click(option)\n\n await waitFor(() => expect(option).not.toBeInTheDocument())\n const rows = screen.getAllByRole('row')\n return rows.at(-1)!\n}\n\n/**\n * Adds public / authenticated groups to the ACL editor.\n * @param user\n */\nexport async function addPublicToAcl(\n user: ReturnType<(typeof userEvent)['setup']>,\n) {\n const makePublicButton = screen.getByRole('button', {\n name: ADD_PUBLIC_PRINCIPALS_BUTTON_TEXT,\n })\n await user.click(makePublicButton)\n\n let rows: HTMLElement[] = []\n let publicRow: HTMLElement | undefined = undefined\n let authenticatedUsersRow: HTMLElement | undefined = undefined\n await waitFor(() => {\n rows = screen.getAllByRole('row')\n publicRow = queryForRowWithPrincipalName(rows, PUBLIC_GROUP_DISPLAY_TEXT)\n authenticatedUsersRow = queryForRowWithPrincipalName(\n rows,\n AUTHENTICATED_GROUP_DISPLAY_TEXT,\n )\n expect(publicRow).toBeInTheDocument()\n expect(authenticatedUsersRow).toBeInTheDocument()\n })\n\n return {\n publicRow: rows.at(-2)!,\n authenticatedUsersRow: rows.at(-1)!,\n }\n}\n"],"mappings":";;;;;AAiBA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,MAAK,MACR,EAAO,CAAG,EAAE,YAAY,GAAe,EAAE,OAAO,GAAM,CAAC,CAC/D;AACH;AAQA,eAAsB,EACpB,GACA,GACA,GACA;CACA,IAAI;CACJ,IAAI;EACF,MAAM,QAAc;GAElB,AADA,IAAM,EAA6B,GAAM,CAAa,GACtD,OAAO,CAAG,EAAE,kBAAkB;EAChC,CAAC;CACH,SAAS,GAAG;EAEV,MADA,EAAO,MAAM,GACH,MAAM,aAAa,EAAc,oBAAoB,EAAE,OAAO,EAAE,CAAC;CAC7E;CAEA,IAAM,IAAiB,EAAO,CAAI,EAAE,YAAY,UAAU;CAM1D,OALI,IACF,OAAO,CAAc,EAAE,kBAAkB,CAAe,IAExD,EAAO,CAAI,EAAE,UAAU,CAAe,GAEjC;AACT;AAQA,SAAgB,EACd,GACA,GACA,GACA;CACA,OAAO,EAAO,CAAG,EAAE,YAAY,MAAM,KAAK,CAAG,EAAE,kBAC7C,CACF;CACA,IAAM,IAAiB,EAAO,CAAG,EAAE,YAAY,UAAU;CACzD,AAAI,IACF,OAAO,CAAc,EAAE,kBAAkB,CAAe,IAExD,EAAO,CAAG,EAAE,UAAU,CAAe;AAEzC;AAQA,eAAsB,EACpB,GACA,GACA,IAAgB,IAChB;CACA,IAAM,IAAe,EAAO,CAAG,EAAE,UAAU,UAAU,EACnD,MAAM,EACR,CAAC;CAED,AADA,MAAM,EAAK,MAAM,CAAY,GACzB,KACF,MAAM,QAAc;EAElB,AADA,OAAO,CAAY,EAAE,IAAI,kBAAkB,GAC3C,OAAO,CAAG,EAAE,IAAI,kBAAkB;CACpC,CAAC;AAEL;AAQA,eAAsB,EACpB,GACA,GACA,GACA;CACA,IAAM,IAAO,EAAO,CAAG,EAAE,UAAU,UAAU;CAC7C,MAAM,EAAK,MAAM,CAAI;CAErB,IAAM,IAAS,EAAO,UAAU,UAAU,EACxC,MAAM,EACR,CAAC;CAGD,AAFA,MAAM,EAAK,MAAM,CAAM,GAEvB,MAAM,QAAc;EAClB,OAAO,CAAM,EAAE,IAAI,kBAAkB;CACvC,CAAC;AACH;AAEA,SAAgB,IAA0B;CACxC,OAAO,EAAO,YAAY,YAAY,EACpC,MAAM,EACR,CAAC;AACH;AAOA,eAAsB,EACpB,GACA,GACA;CACA,IAAM,IAAY,EAAwB;CAG1C,AAFA,OAAO,CAAS,EAAE,kBAAkB,GACpC,MAAM,EAAK,MAAM,CAAS,GAC1B,MAAM,EAAK,KAAK,GAAW,CAAQ;CAEnC,IAAM,IAAS,MAAM,EAAO,WAAe,OAAO,OAAO,EAAS,IAAI,CAAC;CAKvE,OAJA,MAAM,EAAK,MAAM,CAAM,GAEvB,MAAM,QAAc,OAAO,CAAM,EAAE,IAAI,kBAAkB,CAAC,GAC7C,EAAO,aAAa,KAC1B,EAAK,GAAG,EAAE;AACnB;AAMA,eAAsB,EACpB,GACA;CACA,IAAM,IAAmB,EAAO,UAAU,UAAU,EAClD,MAAM,EACR,CAAC;CACD,MAAM,EAAK,MAAM,CAAgB;CAEjC,IAAI,IAAsB,CAAC,GACvB,GACA;CAYJ,OAXA,MAAM,QAAc;EAQlB,AAPA,IAAO,EAAO,aAAa,KAAK,GAChC,IAAY,EAA6B,GAAM,CAAyB,GACxE,IAAwB,EACtB,GACA,CACF,GACA,OAAO,CAAS,EAAE,kBAAkB,GACpC,OAAO,CAAqB,EAAE,kBAAkB;CAClD,CAAC,GAEM;EACL,WAAW,EAAK,GAAG,EAAE;EACrB,uBAAuB,EAAK,GAAG,EAAE;CACnC;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AridhiaAccessStatus.d.ts","sourceRoot":"","sources":["../../../src/components/Aridhia/AridhiaAccessStatus.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"AridhiaAccessStatus.d.ts","sourceRoot":"","sources":["../../../src/components/Aridhia/AridhiaAccessStatus.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CAqK1E"}
|
|
@@ -6,7 +6,7 @@ import "../../synapse-queries/index.js";
|
|
|
6
6
|
import { DialogBase as r } from "../DialogBase.js";
|
|
7
7
|
import i, { RestrictionUiType as a } from "../HasAccess/AccessIcon.js";
|
|
8
8
|
import { FeatureFlagEnum as o } from "../../utils/featureflag/FeatureFlags.js";
|
|
9
|
-
import {
|
|
9
|
+
import { findRequestsForDataset as s, getRestrictionUiTypeFromAridhiaRequests as c } from "./aridhiaAccessStatusUtils.js";
|
|
10
10
|
import { getAridhiaFairPortalDatasetUrl as l } from "./aridhiaFairPortalUrls.js";
|
|
11
11
|
import { useGetAridhiaRequests as u } from "../../aridhia-queries/useGetAridhiaRequests.js";
|
|
12
12
|
import "../../aridhia-queries/index.js";
|
|
@@ -21,12 +21,12 @@ var y = {
|
|
|
21
21
|
p: "0px",
|
|
22
22
|
minWidth: "unset"
|
|
23
23
|
};
|
|
24
|
-
function b(
|
|
25
|
-
let { datasetCode:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
if (!
|
|
24
|
+
function b(r) {
|
|
25
|
+
let { datasetCode: p, fairPortalUrl: b } = r, { isAuthenticated: S } = t(), C = n(o.AMPALS_RDCA_DAP_FORM_ENABLED), { data: w, isLoading: T, isError: E, error: D } = u(), [O, k] = m(null), [A, j] = m(!1), [M, N] = m(!1), [P, F] = m(0);
|
|
26
|
+
function I() {
|
|
27
|
+
k(null), F((e) => e + 1), N(!0);
|
|
28
|
+
}
|
|
29
|
+
if (!S) return /* @__PURE__ */ _(h, {
|
|
30
30
|
sx: y,
|
|
31
31
|
className: e,
|
|
32
32
|
onClick: (e) => {
|
|
@@ -38,48 +38,61 @@ function b(b) {
|
|
|
38
38
|
children: /* @__PURE__ */ _(i, { restrictionUiType: a.AccessBlockedToAnonymous })
|
|
39
39
|
});
|
|
40
40
|
let L = null;
|
|
41
|
-
if (!
|
|
41
|
+
if (!T) if (E && D.isEligibilityFailure) L = /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(h, {
|
|
42
42
|
sx: y,
|
|
43
|
-
onClick: () =>
|
|
43
|
+
onClick: () => j(!0),
|
|
44
44
|
"aria-label": "Link your RDCA-DAP account",
|
|
45
45
|
children: /* @__PURE__ */ _(i, { restrictionUiType: a.AccessBlockedByRDCADAPAccountNotLinked })
|
|
46
46
|
}), /* @__PURE__ */ _(f, {
|
|
47
|
-
open:
|
|
48
|
-
onClose: () =>
|
|
47
|
+
open: A,
|
|
48
|
+
onClose: () => j(!1)
|
|
49
49
|
})] });
|
|
50
50
|
else {
|
|
51
|
-
let e = s(
|
|
52
|
-
|
|
53
|
-
href: l(
|
|
51
|
+
let e = s(w?.items ?? [], p), t = c(e), n = /* @__PURE__ */ _(i, { restrictionUiType: t });
|
|
52
|
+
L = !C && (e.length === 0 || t === a.AccessibleOnRDCADAP) ? b ? /* @__PURE__ */ _("a", {
|
|
53
|
+
href: l(b, p),
|
|
54
54
|
target: "_blank",
|
|
55
55
|
rel: "noopener noreferrer",
|
|
56
56
|
children: n
|
|
57
|
-
}) : n : e
|
|
57
|
+
}) : n : e.length > 0 ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(h, {
|
|
58
58
|
sx: y,
|
|
59
|
-
onClick: (e) =>
|
|
59
|
+
onClick: (e) => k(e.currentTarget),
|
|
60
60
|
"aria-label": "View data access request status",
|
|
61
61
|
children: n
|
|
62
62
|
}), /* @__PURE__ */ _(d, {
|
|
63
|
-
open: !!
|
|
64
|
-
anchorEl:
|
|
65
|
-
onClose: () =>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
63
|
+
open: !!O,
|
|
64
|
+
anchorEl: O,
|
|
65
|
+
onClose: () => k(null),
|
|
66
|
+
datasetCode: p,
|
|
67
|
+
requests: e,
|
|
68
|
+
fairPortalUrl: b,
|
|
69
|
+
onNewRequest: C ? I : void 0
|
|
70
|
+
})] }) : /* @__PURE__ */ _(h, {
|
|
69
71
|
sx: y,
|
|
70
|
-
onClick:
|
|
72
|
+
onClick: I,
|
|
71
73
|
"aria-label": "Request data access",
|
|
72
74
|
children: n
|
|
73
|
-
})
|
|
75
|
+
});
|
|
74
76
|
}
|
|
75
|
-
return /* @__PURE__ */ v(g, { children: [L, /* @__PURE__ */ _(
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
return /* @__PURE__ */ v(g, { children: [L, /* @__PURE__ */ _(x, {
|
|
78
|
+
datasetCode: p,
|
|
79
|
+
open: M,
|
|
80
|
+
onClose: () => N(!1)
|
|
81
|
+
}, P)] });
|
|
82
|
+
}
|
|
83
|
+
function x(e) {
|
|
84
|
+
let { datasetCode: t, open: n, onClose: i } = e, { content: a, actions: o } = p({ datasetCode: t }, {
|
|
85
|
+
enabled: n,
|
|
86
|
+
onClose: i
|
|
87
|
+
});
|
|
88
|
+
return /* @__PURE__ */ _(r, {
|
|
89
|
+
open: n,
|
|
90
|
+
onCancel: i,
|
|
78
91
|
maxWidth: "md",
|
|
79
92
|
title: "Request Data Access",
|
|
80
|
-
content:
|
|
81
|
-
actions:
|
|
82
|
-
})
|
|
93
|
+
content: a,
|
|
94
|
+
actions: o
|
|
95
|
+
});
|
|
83
96
|
}
|
|
84
97
|
//#endregion
|
|
85
98
|
export { b as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AridhiaAccessStatus.js","names":[],"sources":["../../../src/components/Aridhia/AridhiaAccessStatus.tsx"],"sourcesContent":["import { ReactNode, useState } from 'react'\nimport { useGetAridhiaRequests } from '@/aridhia-queries'\nimport { useGetFeatureFlag } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport { SRC_SIGN_IN_CLASS } from '@/utils/SynapseConstants'\nimport { Button } from '@mui/material'\nimport { DialogBase } from '../DialogBase'\nimport AccessIcon, { RestrictionUiType } from '../HasAccess/AccessIcon'\nimport {\n findRequestForDataset,\n getRestrictionUiTypeFromAridhiaRequest,\n} from './aridhiaAccessStatusUtils'\nimport { getAridhiaFairPortalDatasetUrl } from './aridhiaFairPortalUrls'\nimport AridhiaDarStatusPopover from './AridhiaDarStatusPopover'\nimport { useAridhiaDarWizardParts } from './DarWizard/AridhiaDarWizard'\nimport RdcaDapEligibilityDialog from './RdcaDapEligibilityDialog'\n\nconst buttonSx = { p: '0px', minWidth: 'unset' }\n\nexport type AridhiaAccessStatusProps = {\n /**\n * dataset code\n */\n datasetCode: string\n /** Base URL of the RDCA-DAP FAIR portal's browsable UI, e.g. `https://fair.dap.c-path.org`. */\n fairPortalUrl?: string\n}\n\n/**\n * Component that displays the Aridhia data access request status.\n * If the user is not authenticated with Aridhia, shows a sign-in button.\n * Otherwise, shows the access status based on the data access requests.\n */\nexport default function AridhiaAccessStatus(props: AridhiaAccessStatusProps) {\n const { datasetCode, fairPortalUrl } = props\n const { isAuthenticated } = useSynapseContext()\n const isDarFormEnabled = useGetFeatureFlag(\n FeatureFlagEnum.AMPALS_RDCA_DAP_FORM_ENABLED,\n )\n\n const {\n data: requestsResponse,\n isLoading,\n isError,\n error,\n } = useGetAridhiaRequests()\n const [popoverAnchorEl, setPopoverAnchorEl] = useState<HTMLElement | null>(\n null,\n )\n const [eligibilityDialogOpen, setEligibilityDialogOpen] = useState(false)\n const [requestDialogOpen, setRequestDialogOpen] = useState(false)\n const { content: wizardContent, actions: wizardActions } =\n useAridhiaDarWizardParts(\n { datasetCode },\n {\n enabled: requestDialogOpen,\n onClose: () => setRequestDialogOpen(false),\n },\n )\n\n if (!isAuthenticated) {\n return (\n <Button\n sx={buttonSx}\n className={SRC_SIGN_IN_CLASS}\n onClick={ev => {\n if (ev.isTrusted) {\n /*\n There is a tricky problem - \n The portals listens to click events for buttons with the class SRC_SIGN_IN_CLASS set, it listens to this event\n so that it can display the login modal.\n\n This button has an svg inside of it which is problematic because more often than not clicking this button will \n instead click that svg. The event listener in the portals will break as a result.\n\n Though the svg may get the actual click event, because of event bubbling this button will get its onClick called.\n Once onClick is called we can manually dispatch an event off of this button. This does pose a problem, we end up in a \n infinite loop because this button keeps dispatching click events, so we can use the isTrusted to recognize if onClick was\n triggered programmatically or by user click. Lastly, using { bubbles: true } ensures the event bubbles up to the document level.\n\n */\n const clickEvent = new MouseEvent('click', { bubbles: true })\n ev.currentTarget.dispatchEvent(clickEvent)\n }\n }}\n >\n <AccessIcon\n restrictionUiType={RestrictionUiType.AccessBlockedToAnonymous}\n />\n </Button>\n )\n }\n\n let content: ReactNode = null\n if (isLoading) {\n // Show loading state — nothing to render yet.\n } else if (isError && error.isEligibilityFailure) {\n // The token exchange (or any other request) failed because this user has no linked\n // RDCA-DAP account yet — the DAR wizard is unreachable until that's resolved.\n content = (\n <>\n <Button\n sx={buttonSx}\n onClick={() => setEligibilityDialogOpen(true)}\n aria-label=\"Link your RDCA-DAP account\"\n >\n <AccessIcon\n restrictionUiType={\n RestrictionUiType.AccessBlockedByRDCADAPAccountNotLinked\n }\n />\n </Button>\n <RdcaDapEligibilityDialog\n open={eligibilityDialogOpen}\n onClose={() => setEligibilityDialogOpen(false)}\n />\n </>\n )\n } else {\n // Check if there's a request for this dataset\n const entityRequest = findRequestForDataset(\n requestsResponse?.items ?? [],\n datasetCode,\n )\n const restrictionUiType =\n getRestrictionUiTypeFromAridhiaRequest(entityRequest)\n const icon = <AccessIcon restrictionUiType={restrictionUiType} />\n\n if (\n restrictionUiType === RestrictionUiType.AccessibleOnRDCADAP ||\n (!entityRequest && !isDarFormEnabled)\n ) {\n // Approved, or no request yet with the in-app request form not enabled — keep the\n // existing link-out to RDCA-DAP to access or request the data.\n content = fairPortalUrl ? (\n <a\n href={getAridhiaFairPortalDatasetUrl(fairPortalUrl, datasetCode)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {icon}\n </a>\n ) : (\n icon\n )\n } else if (entityRequest) {\n // Pending or denied — click opens the status popover.\n content = (\n <>\n <Button\n sx={buttonSx}\n onClick={ev => setPopoverAnchorEl(ev.currentTarget)}\n aria-label=\"View data access request status\"\n >\n {icon}\n </Button>\n <AridhiaDarStatusPopover\n open={!!popoverAnchorEl}\n anchorEl={popoverAnchorEl}\n onClose={() => setPopoverAnchorEl(null)}\n request={entityRequest}\n fairPortalUrl={fairPortalUrl}\n />\n </>\n )\n } else if (isDarFormEnabled) {\n // No request yet, and the in-app request form is enabled — the icon opens the request\n // wizard in a dialog. The same wizard also renders at the route-based, non-modal\n // `AridhiaDarWizard` page for a full-page entry point.\n content = (\n <Button\n sx={buttonSx}\n onClick={() => setRequestDialogOpen(true)}\n aria-label=\"Request data access\"\n >\n {icon}\n </Button>\n )\n }\n }\n\n return (\n <>\n {content}\n {/* Ensure all authenticated return paths render the wizard dialog to prevent flicker as the DAR state changes (e.g. on the confirmation screen). */}\n <DialogBase\n open={requestDialogOpen}\n onCancel={() => setRequestDialogOpen(false)}\n maxWidth=\"md\"\n title=\"Request Data Access\"\n content={wizardContent}\n actions={wizardActions}\n />\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,IAAM,IAAW;CAAE,GAAG;CAAO,UAAU;AAAQ;AAgB/C,SAAwB,EAAoB,GAAiC;CAC3E,IAAM,EAAE,gBAAa,qBAAkB,GACjC,EAAE,uBAAoB,EAAkB,GACxC,IAAmB,EACvB,EAAgB,4BAClB,GAEM,EACJ,MAAM,GACN,cACA,YACA,aACE,EAAsB,GACpB,CAAC,GAAiB,KAAsB,EAC5C,IACF,GACM,CAAC,GAAuB,KAA4B,EAAS,EAAK,GAClE,CAAC,GAAmB,KAAwB,EAAS,EAAK,GAC1D,EAAE,SAAS,GAAe,SAAS,MACvC,EACE,EAAE,eAAY,GACd;EACE,SAAS;EACT,eAAe,EAAqB,EAAK;CAC3C,CACF;CAEF,IAAI,CAAC,GACH,OACE,kBAAC,GAAD;EACE,IAAI;EACJ,WAAW;EACX,UAAS,MAAM;GACb,IAAI,EAAG,WAAW;IAehB,IAAM,IAAa,IAAI,WAAW,SAAS,EAAE,SAAS,GAAK,CAAC;IAC5D,EAAG,cAAc,cAAc,CAAU;GAC3C;EACF;YAEA,kBAAC,GAAD,EACE,mBAAmB,EAAkB,yBACtC,CAAA;CACK,CAAA;CAIZ,IAAI,IAAqB;CACzB,IAAI,IAEG,IAAI,KAAW,EAAM,sBAG1B,IACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,IAAI;EACJ,eAAe,EAAyB,EAAI;EAC5C,cAAW;YAEX,kBAAC,GAAD,EACE,mBACE,EAAkB,uCAErB,CAAA;CACK,CAAA,GACR,kBAAC,GAAD;EACE,MAAM;EACN,eAAe,EAAyB,EAAK;CAC9C,CAAA,CACD,EAAA,CAAA;MAEC;EAEL,IAAM,IAAgB,EACpB,GAAkB,SAAS,CAAC,GAC5B,CACF,GACM,IACJ,EAAuC,CAAa,GAChD,IAAO,kBAAC,GAAD,EAA+B,qBAAoB,CAAA;EAEhE,AACE,MAAsB,EAAkB,uBACvC,CAAC,KAAiB,CAAC,IAIpB,IAAU,IACR,kBAAC,KAAD;GACE,MAAM,EAA+B,GAAe,CAAW;GAC/D,QAAO;GACP,KAAI;aAEH;EACA,CAAA,IAEH,IAEO,IAET,IACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,IAAI;GACJ,UAAS,MAAM,EAAmB,EAAG,aAAa;GAClD,cAAW;aAEV;EACK,CAAA,GACR,kBAAC,GAAD;GACE,MAAM,CAAC,CAAC;GACR,UAAU;GACV,eAAe,EAAmB,IAAI;GACtC,SAAS;GACM;EAChB,CAAA,CACD,EAAA,CAAA,IAEK,MAIT,IACE,kBAAC,GAAD;GACE,IAAI;GACJ,eAAe,EAAqB,EAAI;GACxC,cAAW;aAEV;EACK,CAAA;CAGd;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA,CACG,GAED,kBAAC,GAAD;EACE,MAAM;EACN,gBAAgB,EAAqB,EAAK;EAC1C,UAAS;EACT,OAAM;EACN,SAAS;EACT,SAAS;CACV,CAAA,CACD,EAAA,CAAA;AAEN"}
|
|
1
|
+
{"version":3,"file":"AridhiaAccessStatus.js","names":[],"sources":["../../../src/components/Aridhia/AridhiaAccessStatus.tsx"],"sourcesContent":["import { ReactNode, useState } from 'react'\nimport { useGetAridhiaRequests } from '@/aridhia-queries'\nimport { useGetFeatureFlag } from '@/synapse-queries'\nimport { useSynapseContext } from '@/utils'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport { SRC_SIGN_IN_CLASS } from '@/utils/SynapseConstants'\nimport { Button } from '@mui/material'\nimport { DialogBase } from '../DialogBase'\nimport AccessIcon, { RestrictionUiType } from '../HasAccess/AccessIcon'\nimport {\n findRequestsForDataset,\n getRestrictionUiTypeFromAridhiaRequests,\n} from './aridhiaAccessStatusUtils'\nimport { getAridhiaFairPortalDatasetUrl } from './aridhiaFairPortalUrls'\nimport AridhiaDarStatusPopover from './AridhiaDarStatusPopover'\nimport { useAridhiaDarWizardParts } from './DarWizard/AridhiaDarWizard'\nimport RdcaDapEligibilityDialog from './RdcaDapEligibilityDialog'\n\nconst buttonSx = { p: '0px', minWidth: 'unset' }\n\nexport type AridhiaAccessStatusProps = {\n /**\n * dataset code\n */\n datasetCode: string\n /** Base URL of the RDCA-DAP FAIR portal's browsable UI, e.g. `https://fair.dap.c-path.org`. */\n fairPortalUrl?: string\n}\n\n/**\n * Component that displays the Aridhia data access request status.\n * If the user is not authenticated with Aridhia, shows a sign-in button.\n * Otherwise, shows the access status based on the data access requests.\n */\nexport default function AridhiaAccessStatus(props: AridhiaAccessStatusProps) {\n const { datasetCode, fairPortalUrl } = props\n const { isAuthenticated } = useSynapseContext()\n const isDarFormEnabled = useGetFeatureFlag(\n FeatureFlagEnum.AMPALS_RDCA_DAP_FORM_ENABLED,\n )\n\n const {\n data: requestsResponse,\n isLoading,\n isError,\n error,\n } = useGetAridhiaRequests()\n const [popoverAnchorEl, setPopoverAnchorEl] = useState<HTMLElement | null>(\n null,\n )\n const [eligibilityDialogOpen, setEligibilityDialogOpen] = useState(false)\n const [requestDialogOpen, setRequestDialogOpen] = useState(false)\n // Every opening of the wizard remounts it under a new session key, so a submitted request's\n // confirmation screen never carries over. The remounted wizard resumes this dataset's\n // unsubmitted draft if one exists, and otherwise starts a draft with a fresh request code.\n const [wizardSession, setWizardSession] = useState(0)\n\n function openRequestWizard() {\n setPopoverAnchorEl(null)\n setWizardSession(session => session + 1)\n setRequestDialogOpen(true)\n }\n\n if (!isAuthenticated) {\n return (\n <Button\n sx={buttonSx}\n className={SRC_SIGN_IN_CLASS}\n onClick={ev => {\n if (ev.isTrusted) {\n /*\n There is a tricky problem - \n The portals listens to click events for buttons with the class SRC_SIGN_IN_CLASS set, it listens to this event\n so that it can display the login modal.\n\n This button has an svg inside of it which is problematic because more often than not clicking this button will \n instead click that svg. The event listener in the portals will break as a result.\n\n Though the svg may get the actual click event, because of event bubbling this button will get its onClick called.\n Once onClick is called we can manually dispatch an event off of this button. This does pose a problem, we end up in a \n infinite loop because this button keeps dispatching click events, so we can use the isTrusted to recognize if onClick was\n triggered programmatically or by user click. Lastly, using { bubbles: true } ensures the event bubbles up to the document level.\n\n */\n const clickEvent = new MouseEvent('click', { bubbles: true })\n ev.currentTarget.dispatchEvent(clickEvent)\n }\n }}\n >\n <AccessIcon\n restrictionUiType={RestrictionUiType.AccessBlockedToAnonymous}\n />\n </Button>\n )\n }\n\n let content: ReactNode = null\n if (isLoading) {\n // Show loading state — nothing to render yet.\n } else if (isError && error.isEligibilityFailure) {\n // The token exchange (or any other request) failed because this user has no linked\n // RDCA-DAP account yet — the DAR wizard is unreachable until that's resolved.\n content = (\n <>\n <Button\n sx={buttonSx}\n onClick={() => setEligibilityDialogOpen(true)}\n aria-label=\"Link your RDCA-DAP account\"\n >\n <AccessIcon\n restrictionUiType={\n RestrictionUiType.AccessBlockedByRDCADAPAccountNotLinked\n }\n />\n </Button>\n <RdcaDapEligibilityDialog\n open={eligibilityDialogOpen}\n onClose={() => setEligibilityDialogOpen(false)}\n />\n </>\n )\n } else {\n const datasetRequests = findRequestsForDataset(\n requestsResponse?.items ?? [],\n datasetCode,\n )\n const restrictionUiType =\n getRestrictionUiTypeFromAridhiaRequests(datasetRequests)\n const icon = <AccessIcon restrictionUiType={restrictionUiType} />\n\n if (\n !isDarFormEnabled &&\n (datasetRequests.length === 0 ||\n restrictionUiType === RestrictionUiType.AccessibleOnRDCADAP)\n ) {\n // Without the in-app request form, RDCA-DAP is where the user accesses or requests the\n // data — link straight out to it.\n content = fairPortalUrl ? (\n <a\n href={getAridhiaFairPortalDatasetUrl(fairPortalUrl, datasetCode)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {icon}\n </a>\n ) : (\n icon\n )\n } else if (datasetRequests.length > 0) {\n // The popover lists every request for this dataset; with the in-app form enabled it also\n // offers another request (more tables, or a resubmission after a denial).\n content = (\n <>\n <Button\n sx={buttonSx}\n onClick={ev => setPopoverAnchorEl(ev.currentTarget)}\n aria-label=\"View data access request status\"\n >\n {icon}\n </Button>\n <AridhiaDarStatusPopover\n open={!!popoverAnchorEl}\n anchorEl={popoverAnchorEl}\n onClose={() => setPopoverAnchorEl(null)}\n datasetCode={datasetCode}\n requests={datasetRequests}\n fairPortalUrl={fairPortalUrl}\n onNewRequest={isDarFormEnabled ? openRequestWizard : undefined}\n />\n </>\n )\n } else {\n // No request yet, and the in-app request form is enabled — the icon opens the request\n // wizard in a dialog. The same wizard also renders at the route-based, non-modal\n // `AridhiaDarWizard` page for a full-page entry point.\n content = (\n <Button\n sx={buttonSx}\n onClick={openRequestWizard}\n aria-label=\"Request data access\"\n >\n {icon}\n </Button>\n )\n }\n }\n\n return (\n <>\n {content}\n {/* Ensure all authenticated return paths render the wizard dialog to prevent flicker as the DAR state changes (e.g. on the confirmation screen). */}\n <AridhiaDarWizardDialog\n key={wizardSession}\n datasetCode={datasetCode}\n open={requestDialogOpen}\n onClose={() => setRequestDialogOpen(false)}\n />\n </>\n )\n}\n\nfunction AridhiaDarWizardDialog(props: {\n datasetCode: string\n open: boolean\n onClose: () => void\n}) {\n const { datasetCode, open, onClose } = props\n const { content, actions } = useAridhiaDarWizardParts(\n { datasetCode },\n { enabled: open, onClose },\n )\n return (\n <DialogBase\n open={open}\n onCancel={onClose}\n maxWidth=\"md\"\n title=\"Request Data Access\"\n content={content}\n actions={actions}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,IAAM,IAAW;CAAE,GAAG;CAAO,UAAU;AAAQ;AAgB/C,SAAwB,EAAoB,GAAiC;CAC3E,IAAM,EAAE,gBAAa,qBAAkB,GACjC,EAAE,uBAAoB,EAAkB,GACxC,IAAmB,EACvB,EAAgB,4BAClB,GAEM,EACJ,MAAM,GACN,cACA,YACA,aACE,EAAsB,GACpB,CAAC,GAAiB,KAAsB,EAC5C,IACF,GACM,CAAC,GAAuB,KAA4B,EAAS,EAAK,GAClE,CAAC,GAAmB,KAAwB,EAAS,EAAK,GAI1D,CAAC,GAAe,KAAoB,EAAS,CAAC;CAEpD,SAAS,IAAoB;EAG3B,AAFA,EAAmB,IAAI,GACvB,GAAiB,MAAW,IAAU,CAAC,GACvC,EAAqB,EAAI;CAC3B;CAEA,IAAI,CAAC,GACH,OACE,kBAAC,GAAD;EACE,IAAI;EACJ,WAAW;EACX,UAAS,MAAM;GACb,IAAI,EAAG,WAAW;IAehB,IAAM,IAAa,IAAI,WAAW,SAAS,EAAE,SAAS,GAAK,CAAC;IAC5D,EAAG,cAAc,cAAc,CAAU;GAC3C;EACF;YAEA,kBAAC,GAAD,EACE,mBAAmB,EAAkB,yBACtC,CAAA;CACK,CAAA;CAIZ,IAAI,IAAqB;CACzB,IAAI,IAEG,IAAI,KAAW,EAAM,sBAG1B,IACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,IAAI;EACJ,eAAe,EAAyB,EAAI;EAC5C,cAAW;YAEX,kBAAC,GAAD,EACE,mBACE,EAAkB,uCAErB,CAAA;CACK,CAAA,GACR,kBAAC,GAAD;EACE,MAAM;EACN,eAAe,EAAyB,EAAK;CAC9C,CAAA,CACD,EAAA,CAAA;MAEC;EACL,IAAM,IAAkB,EACtB,GAAkB,SAAS,CAAC,GAC5B,CACF,GACM,IACJ,EAAwC,CAAe,GACnD,IAAO,kBAAC,GAAD,EAA+B,qBAAoB,CAAA;EAEhE,AA6CE,IA5CA,CAAC,MACA,EAAgB,WAAW,KAC1B,MAAsB,EAAkB,uBAIhC,IACR,kBAAC,KAAD;GACE,MAAM,EAA+B,GAAe,CAAW;GAC/D,QAAO;GACP,KAAI;aAEH;EACA,CAAA,IAEH,IAEO,EAAgB,SAAS,IAIhC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,IAAI;GACJ,UAAS,MAAM,EAAmB,EAAG,aAAa;GAClD,cAAW;aAEV;EACK,CAAA,GACR,kBAAC,GAAD;GACE,MAAM,CAAC,CAAC;GACR,UAAU;GACV,eAAe,EAAmB,IAAI;GACzB;GACb,UAAU;GACK;GACf,cAAc,IAAmB,IAAoB,KAAA;EACtD,CAAA,CACD,EAAA,CAAA,IAOF,kBAAC,GAAD;GACE,IAAI;GACJ,SAAS;GACT,cAAW;aAEV;EACK,CAAA;CAGd;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA,CACG,GAED,kBAAC,GAAD;EAEe;EACb,MAAM;EACN,eAAe,EAAqB,EAAK;CAC1C,GAJM,CAIN,CACD,EAAA,CAAA;AAEN;AAEA,SAAS,EAAuB,GAI7B;CACD,IAAM,EAAE,gBAAa,SAAM,eAAY,GACjC,EAAE,YAAS,eAAY,EAC3B,EAAE,eAAY,GACd;EAAE,SAAS;EAAM;CAAQ,CAC3B;CACA,OACE,kBAAC,GAAD;EACQ;EACN,UAAU;EACV,UAAS;EACT,OAAM;EACG;EACA;CACV,CAAA;AAEL"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { PopoverProps } from '@mui/material';
|
|
2
2
|
import { RequestListItem } from '@sage-bionetworks/aridhia-client/generated/models';
|
|
3
3
|
export type AridhiaDarStatusPopoverProps = Pick<PopoverProps, 'anchorEl' | 'open' | 'id' | 'onClose'> & {
|
|
4
|
-
|
|
4
|
+
datasetCode: string;
|
|
5
|
+
/** Every request the user holds for the dataset, in display order. */
|
|
6
|
+
requests: RequestListItem[];
|
|
5
7
|
/** Base URL of the RDCA-DAP FAIR portal's browsable UI, e.g. `https://fair.dap.c-path.org`. */
|
|
6
8
|
fairPortalUrl?: string;
|
|
9
|
+
/** When set, offers to start another request (e.g. for different tables, or after a denial). */
|
|
10
|
+
onNewRequest?: () => void;
|
|
7
11
|
};
|
|
8
12
|
/**
|
|
9
|
-
* Detail popover
|
|
13
|
+
* Detail popover listing the user's DARs for one dataset.
|
|
10
14
|
*/
|
|
11
15
|
export default function AridhiaDarStatusPopover(props: AridhiaDarStatusPopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
12
16
|
//# sourceMappingURL=AridhiaDarStatusPopover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AridhiaDarStatusPopover.d.ts","sourceRoot":"","sources":["../../../src/components/Aridhia/AridhiaDarStatusPopover.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AridhiaDarStatusPopover.d.ts","sourceRoot":"","sources":["../../../src/components/Aridhia/AridhiaDarStatusPopover.tsx"],"names":[],"mappings":"AACA,OAAO,EAQL,YAAY,EAGb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAA;AAiBnF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,YAAY,EACZ,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CACvC,GAAG;IACF,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,KAAK,EAAE,4BAA4B,2CA8DpC"}
|
|
@@ -1,14 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { getAridhiaFairPortalDatasetUrl as e, getAridhiaFairPortalRequestUrl as t } from "./aridhiaFairPortalUrls.js";
|
|
2
|
+
import { useId as n } from "react";
|
|
3
|
+
import { Button as r, Chip as i, Link as a, List as o, ListItem as s, Popover as c, Stack as l, Typography as u } from "@mui/material";
|
|
4
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
4
5
|
//#region src/components/Aridhia/AridhiaDarStatusPopover.tsx
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
var m = {
|
|
7
|
+
approved: {
|
|
8
|
+
label: "Approved",
|
|
9
|
+
color: "success"
|
|
10
|
+
},
|
|
11
|
+
pending: {
|
|
12
|
+
label: "Pending",
|
|
13
|
+
color: "warning"
|
|
14
|
+
},
|
|
15
|
+
denied: {
|
|
16
|
+
label: "Denied",
|
|
17
|
+
color: "error"
|
|
18
|
+
},
|
|
19
|
+
error: {
|
|
20
|
+
label: "Error",
|
|
21
|
+
color: "default"
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
function h(t) {
|
|
25
|
+
let { anchorEl: i, open: a, id: s, onClose: m, datasetCode: h, requests: _, fairPortalUrl: v, onNewRequest: y } = t, b = n(), x = _.some((e) => e.status === "approved");
|
|
26
|
+
return /* @__PURE__ */ f(c, {
|
|
27
|
+
id: s,
|
|
28
|
+
open: a,
|
|
29
|
+
anchorEl: i,
|
|
30
|
+
onClose: m,
|
|
12
31
|
anchorOrigin: {
|
|
13
32
|
vertical: "bottom",
|
|
14
33
|
horizontal: "center"
|
|
@@ -17,40 +36,91 @@ function s(s) {
|
|
|
17
36
|
vertical: "top",
|
|
18
37
|
horizontal: "center"
|
|
19
38
|
},
|
|
20
|
-
children: /* @__PURE__ */
|
|
21
|
-
spacing: 1,
|
|
39
|
+
children: /* @__PURE__ */ p(l, {
|
|
40
|
+
spacing: 1.5,
|
|
22
41
|
sx: {
|
|
23
42
|
p: 2,
|
|
24
|
-
|
|
43
|
+
width: 360,
|
|
44
|
+
maxWidth: "100%"
|
|
25
45
|
},
|
|
26
46
|
children: [
|
|
27
|
-
/* @__PURE__ */
|
|
28
|
-
|
|
29
|
-
|
|
47
|
+
/* @__PURE__ */ f(u, {
|
|
48
|
+
id: b,
|
|
49
|
+
variant: "subtitle1",
|
|
50
|
+
component: "h2",
|
|
51
|
+
children: "Your data access requests"
|
|
30
52
|
}),
|
|
31
|
-
/* @__PURE__ */ o
|
|
32
|
-
|
|
33
|
-
|
|
53
|
+
/* @__PURE__ */ f(o, {
|
|
54
|
+
"aria-labelledby": b,
|
|
55
|
+
disablePadding: !0,
|
|
56
|
+
children: _.map((e, t) => /* @__PURE__ */ f(g, {
|
|
57
|
+
request: e,
|
|
58
|
+
fairPortalUrl: v,
|
|
59
|
+
divider: t < _.length - 1
|
|
60
|
+
}, e.code ?? `uncoded-${t}`))
|
|
34
61
|
}),
|
|
35
|
-
|
|
36
|
-
variant: "
|
|
37
|
-
|
|
62
|
+
x && v && /* @__PURE__ */ f(r, {
|
|
63
|
+
variant: "outlined",
|
|
64
|
+
href: e(v, h),
|
|
65
|
+
target: "_blank",
|
|
66
|
+
rel: "noopener noreferrer",
|
|
67
|
+
children: "Open dataset on RDCA-DAP"
|
|
38
68
|
}),
|
|
39
|
-
|
|
69
|
+
y && /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f(u, {
|
|
40
70
|
variant: "body2",
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
71
|
+
color: "text.secondary",
|
|
72
|
+
children: "Need different tables, or was a request denied? You can submit another request."
|
|
73
|
+
}), /* @__PURE__ */ f(r, {
|
|
74
|
+
variant: "contained",
|
|
75
|
+
onClick: y,
|
|
76
|
+
children: "Submit a new request"
|
|
77
|
+
})] })
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function g(e) {
|
|
83
|
+
let { request: n, fairPortalUrl: r, divider: o } = e, c = n.name || n.code, d = n.status ? m[n.status] : void 0;
|
|
84
|
+
return /* @__PURE__ */ p(s, {
|
|
85
|
+
divider: o,
|
|
86
|
+
disableGutters: !0,
|
|
87
|
+
sx: {
|
|
88
|
+
display: "block",
|
|
89
|
+
py: 1
|
|
90
|
+
},
|
|
91
|
+
children: [/* @__PURE__ */ p(l, {
|
|
92
|
+
direction: "row",
|
|
93
|
+
spacing: 1,
|
|
94
|
+
sx: {
|
|
95
|
+
alignItems: "center",
|
|
96
|
+
justifyContent: "space-between"
|
|
97
|
+
},
|
|
98
|
+
children: [/* @__PURE__ */ f(u, {
|
|
99
|
+
variant: "subtitle2",
|
|
100
|
+
sx: { wordBreak: "break-word" },
|
|
101
|
+
children: r && n.code ? /* @__PURE__ */ f(a, {
|
|
102
|
+
href: t(r, n.code),
|
|
45
103
|
target: "_blank",
|
|
46
104
|
rel: "noopener noreferrer",
|
|
47
|
-
children:
|
|
48
|
-
})
|
|
105
|
+
children: c
|
|
106
|
+
}) : c
|
|
107
|
+
}), d && /* @__PURE__ */ f(i, {
|
|
108
|
+
size: "small",
|
|
109
|
+
label: d.label,
|
|
110
|
+
color: d.color
|
|
111
|
+
})]
|
|
112
|
+
}), (n.created_at || n.updated_at) && /* @__PURE__ */ p(u, {
|
|
113
|
+
variant: "body2",
|
|
114
|
+
color: "text.secondary",
|
|
115
|
+
children: [
|
|
116
|
+
n.created_at && `Created ${new Date(n.created_at).toLocaleDateString()}`,
|
|
117
|
+
n.created_at && n.updated_at && " · ",
|
|
118
|
+
n.updated_at && `Updated ${new Date(n.updated_at).toLocaleDateString()}`
|
|
49
119
|
]
|
|
50
|
-
})
|
|
120
|
+
})]
|
|
51
121
|
});
|
|
52
122
|
}
|
|
53
123
|
//#endregion
|
|
54
|
-
export {
|
|
124
|
+
export { h as default };
|
|
55
125
|
|
|
56
126
|
//# sourceMappingURL=AridhiaDarStatusPopover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AridhiaDarStatusPopover.js","names":[],"sources":["../../../src/components/Aridhia/AridhiaDarStatusPopover.tsx"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"AridhiaDarStatusPopover.js","names":[],"sources":["../../../src/components/Aridhia/AridhiaDarStatusPopover.tsx"],"sourcesContent":["import { useId } from 'react'\nimport {\n Button,\n Chip,\n ChipProps,\n Link as MuiLink,\n List,\n ListItem,\n Popover,\n PopoverProps,\n Stack,\n Typography,\n} from '@mui/material'\nimport { RequestListItem } from '@sage-bionetworks/aridhia-client/generated/models'\nimport { RequestStatus } from './aridhiaAccessStatusUtils'\nimport {\n getAridhiaFairPortalDatasetUrl,\n getAridhiaFairPortalRequestUrl,\n} from './aridhiaFairPortalUrls'\n\nconst STATUS_CHIP: Record<\n RequestStatus,\n { label: string; color: ChipProps['color'] }\n> = {\n approved: { label: 'Approved', color: 'success' },\n pending: { label: 'Pending', color: 'warning' },\n denied: { label: 'Denied', color: 'error' },\n error: { label: 'Error', color: 'default' },\n}\n\nexport type AridhiaDarStatusPopoverProps = Pick<\n PopoverProps,\n 'anchorEl' | 'open' | 'id' | 'onClose'\n> & {\n datasetCode: string\n /** Every request the user holds for the dataset, in display order. */\n requests: RequestListItem[]\n /** Base URL of the RDCA-DAP FAIR portal's browsable UI, e.g. `https://fair.dap.c-path.org`. */\n fairPortalUrl?: string\n /** When set, offers to start another request (e.g. for different tables, or after a denial). */\n onNewRequest?: () => void\n}\n\n/**\n * Detail popover listing the user's DARs for one dataset.\n */\nexport default function AridhiaDarStatusPopover(\n props: AridhiaDarStatusPopoverProps,\n) {\n const {\n anchorEl,\n open,\n id,\n onClose,\n datasetCode,\n requests,\n fairPortalUrl,\n onNewRequest,\n } = props\n const headingId = useId()\n const hasApprovedRequest = requests.some(r => r.status === 'approved')\n\n return (\n <Popover\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n >\n <Stack spacing={1.5} sx={{ p: 2, width: 360, maxWidth: '100%' }}>\n <Typography id={headingId} variant=\"subtitle1\" component=\"h2\">\n Your data access requests\n </Typography>\n <List aria-labelledby={headingId} disablePadding>\n {requests.map((request, index) => (\n <DarListItem\n key={request.code ?? `uncoded-${index}`}\n request={request}\n fairPortalUrl={fairPortalUrl}\n divider={index < requests.length - 1}\n />\n ))}\n </List>\n {hasApprovedRequest && fairPortalUrl && (\n <Button\n variant=\"outlined\"\n href={getAridhiaFairPortalDatasetUrl(fairPortalUrl, datasetCode)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Open dataset on RDCA-DAP\n </Button>\n )}\n {onNewRequest && (\n <>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Need different tables, or was a request denied? You can submit\n another request.\n </Typography>\n <Button variant=\"contained\" onClick={onNewRequest}>\n Submit a new request\n </Button>\n </>\n )}\n </Stack>\n </Popover>\n )\n}\n\nfunction DarListItem(props: {\n request: RequestListItem\n fairPortalUrl?: string\n divider: boolean\n}) {\n const { request, fairPortalUrl, divider } = props\n const title = request.name || request.code\n const chip = request.status ? STATUS_CHIP[request.status] : undefined\n\n return (\n <ListItem divider={divider} disableGutters sx={{ display: 'block', py: 1 }}>\n <Stack\n direction=\"row\"\n spacing={1}\n sx={{ alignItems: 'center', justifyContent: 'space-between' }}\n >\n <Typography variant=\"subtitle2\" sx={{ wordBreak: 'break-word' }}>\n {fairPortalUrl && request.code ? (\n <MuiLink\n href={getAridhiaFairPortalRequestUrl(fairPortalUrl, request.code)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {title}\n </MuiLink>\n ) : (\n title\n )}\n </Typography>\n {chip && <Chip size=\"small\" label={chip.label} color={chip.color} />}\n </Stack>\n {(request.created_at || request.updated_at) && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {request.created_at &&\n `Created ${new Date(request.created_at).toLocaleDateString()}`}\n {request.created_at && request.updated_at && ' · '}\n {request.updated_at &&\n `Updated ${new Date(request.updated_at).toLocaleDateString()}`}\n </Typography>\n )}\n </ListItem>\n )\n}\n"],"mappings":";;;;;AAoBA,IAAM,IAGF;CACF,UAAU;EAAE,OAAO;EAAY,OAAO;CAAU;CAChD,SAAS;EAAE,OAAO;EAAW,OAAO;CAAU;CAC9C,QAAQ;EAAE,OAAO;EAAU,OAAO;CAAQ;CAC1C,OAAO;EAAE,OAAO;EAAS,OAAO;CAAU;AAC5C;AAkBA,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,aACA,SACA,OACA,YACA,gBACA,aACA,kBACA,oBACE,GACE,IAAY,EAAM,GAClB,IAAqB,EAAS,MAAK,MAAK,EAAE,WAAW,UAAU;CAErE,OACE,kBAAC,GAAD;EACM;EACE;EACI;EACD;EACT,cAAc;GAAE,UAAU;GAAU,YAAY;EAAS;EACzD,iBAAiB;GAAE,UAAU;GAAO,YAAY;EAAS;YAEzD,kBAAC,GAAD;GAAO,SAAS;GAAK,IAAI;IAAE,GAAG;IAAG,OAAO;IAAK,UAAU;GAAO;aAA9D;IACE,kBAAC,GAAD;KAAY,IAAI;KAAW,SAAQ;KAAY,WAAU;eAAK;IAElD,CAAA;IACZ,kBAAC,GAAD;KAAM,mBAAiB;KAAW,gBAAA;eAC/B,EAAS,KAAK,GAAS,MACtB,kBAAC,GAAD;MAEW;MACM;MACf,SAAS,IAAQ,EAAS,SAAS;KACpC,GAJM,EAAQ,QAAQ,WAAW,GAIjC,CACF;IACG,CAAA;IACL,KAAsB,KACrB,kBAAC,GAAD;KACE,SAAQ;KACR,MAAM,EAA+B,GAAe,CAAW;KAC/D,QAAO;KACP,KAAI;eACL;IAEO,CAAA;IAET,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;KAAY,SAAQ;KAAQ,OAAM;eAAiB;IAGvC,CAAA,GACZ,kBAAC,GAAD;KAAQ,SAAQ;KAAY,SAAS;eAAc;IAE3C,CAAA,CACR,EAAA,CAAA;GAEC;;CACA,CAAA;AAEb;AAEA,SAAS,EAAY,GAIlB;CACD,IAAM,EAAE,YAAS,kBAAe,eAAY,GACtC,IAAQ,EAAQ,QAAQ,EAAQ,MAChC,IAAO,EAAQ,SAAS,EAAY,EAAQ,UAAU,KAAA;CAE5D,OACE,kBAAC,GAAD;EAAmB;EAAS,gBAAA;EAAe,IAAI;GAAE,SAAS;GAAS,IAAI;EAAE;YAAzE,CACE,kBAAC,GAAD;GACE,WAAU;GACV,SAAS;GACT,IAAI;IAAE,YAAY;IAAU,gBAAgB;GAAgB;aAH9D,CAKE,kBAAC,GAAD;IAAY,SAAQ;IAAY,IAAI,EAAE,WAAW,aAAa;cAC3D,KAAiB,EAAQ,OACxB,kBAAC,GAAD;KACE,MAAM,EAA+B,GAAe,EAAQ,IAAI;KAChE,QAAO;KACP,KAAI;eAEH;IACM,CAAA,IAET;GAEQ,CAAA,GACX,KAAQ,kBAAC,GAAD;IAAM,MAAK;IAAQ,OAAO,EAAK;IAAO,OAAO,EAAK;GAAQ,CAAA,CAC9D;OACL,EAAQ,cAAc,EAAQ,eAC9B,kBAAC,GAAD;GAAY,SAAQ;GAAQ,OAAM;aAAlC;IACG,EAAQ,cACP,WAAW,IAAI,KAAK,EAAQ,UAAU,EAAE,mBAAmB;IAC5D,EAAQ,cAAc,EAAQ,cAAc;IAC5C,EAAQ,cACP,WAAW,IAAI,KAAK,EAAQ,UAAU,EAAE,mBAAmB;GACnD;IAEN;;AAEd"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { RestrictionUiType } from '../HasAccess/AccessIcon';
|
|
2
2
|
import { RequestListItem } from '@sage-bionetworks/aridhia-client/generated/models';
|
|
3
|
+
export type RequestStatus = NonNullable<RequestListItem['status']>;
|
|
3
4
|
/**
|
|
4
|
-
* Maps
|
|
5
|
+
* Maps a user's Aridhia requests for one dataset to the RestrictionUiType for display.
|
|
5
6
|
*
|
|
6
|
-
* @param
|
|
7
|
-
* @returns The
|
|
7
|
+
* @param requests - Every request the user holds for the dataset (may be empty)
|
|
8
|
+
* @returns The RestrictionUiType of the highest-precedence status present, or
|
|
9
|
+
* `AccessBlockedByRestriction` when no request has a recognized status
|
|
8
10
|
*/
|
|
9
|
-
export declare function
|
|
11
|
+
export declare function getRestrictionUiTypeFromAridhiaRequests(requests: readonly RequestListItem[]): RestrictionUiType;
|
|
10
12
|
/**
|
|
11
|
-
* Finds
|
|
12
|
-
* If multiple requests match, returns the most recently updated one.
|
|
13
|
+
* Finds every Aridhia request that includes a specific dataset.
|
|
13
14
|
*
|
|
14
15
|
* @param requests - Array of Aridhia requests
|
|
15
|
-
* @param datasetCode - The dataset code to search for
|
|
16
|
-
* @returns The most recently updated
|
|
16
|
+
* @param datasetCode - The dataset code to search for (case-sensitive)
|
|
17
|
+
* @returns The matching requests, most recently updated first; requests whose `updated_at` is
|
|
18
|
+
* missing or unparseable sort last
|
|
17
19
|
*/
|
|
18
|
-
export declare function
|
|
20
|
+
export declare function findRequestsForDataset(requests: readonly RequestListItem[], datasetCode: string): RequestListItem[];
|
|
19
21
|
//# sourceMappingURL=aridhiaAccessStatusUtils.d.ts.map
|