synapse-react-client 4.0.45 → 4.0.47
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/AridhiaKeyFactory.d.ts +1 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -1
- package/dist/aridhia-queries/AridhiaKeyFactory.js +3 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
- package/dist/aridhia-queries/index.d.ts +1 -0
- package/dist/aridhia-queries/index.d.ts.map +1 -1
- package/dist/aridhia-queries/index.js +11 -10
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts +19 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js +14 -0
- package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js.map +1 -0
- package/dist/aridhia-queries/useSubmitAridhiaDar.js +2 -2
- package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +6 -4
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +11 -8
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.js +1 -1
- package/dist/components/AccessTokenPage/AccessTokenPage.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/AcknowledgementsPage/AcknowledgementsPage.js +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.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/DarWizard/DarSectionForm.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js +17 -13
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +3 -3
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +33 -34
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.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/Aridhia/fairFormToRjsf.js +1 -1
- package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js +3 -3
- 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/CertificationQuiz/CertificationQuiz.js +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.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/AvailableEvaluationQueueList.js +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.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/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +6 -6
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js +4 -4
- package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +4 -4
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js +4 -4
- package/dist/components/CitationPopover/CitationPopoverContent.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/ComponentCollapse.d.ts.map +1 -1
- package/dist/components/ComponentCollapse.js +2 -1
- package/dist/components/ComponentCollapse.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/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +231 -219
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.js +5 -4
- package/dist/components/DataGrid/SyncGridWithSourceButton.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/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +7 -5
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js +4 -4
- package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsButton.js +4 -4
- package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +12 -8
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
- 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 +14 -12
- 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/applyModelChange.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js +14 -14
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +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/DataGrid/utils/splitPatch.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/splitPatch.js +22 -13
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +3 -2
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +1 -3
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +16 -10
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.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/EntityFinder.js +4 -4
- package/dist/components/EntityFinder/EntityIdTextField.js +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.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/EntityFinder/tree/VirtualizedTree.d.ts.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js +5 -4
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- 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/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js +2 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.d.ts.map +1 -1
- package/dist/components/EntityUpload/FileUploadProgress.js +11 -7
- package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.d.ts.map +1 -1
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js +4 -3
- package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.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/ChoiceOptionsEditor.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +2 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +2 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.js +2 -1
- package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -1
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js +4 -4
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
- package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +1 -1
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -1
- package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/StepCard.js +15 -10
- package/dist/components/FormTemplateEditor/StepCard.js.map +1 -1
- package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/StepFieldRow.js +11 -6
- package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +2 -1
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -1
- 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 +46 -46
- 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/PortalDOI/PortalDOI.js +5 -5
- package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +38 -38
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.js +1 -1
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/HelpPopover/HelpPopover.js +1 -1
- package/dist/components/HelpPopover/HelpPopover.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/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +154 -47
- package/dist/components/IconSvg/IconSvg.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/JsonSchemaForm/templates/ButtonTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js +19 -16
- package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +2 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts +9 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts.map +1 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js +21 -0
- package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js.map +1 -0
- package/dist/components/Markdown/MarkdownCollapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js +3 -1
- package/dist/components/Markdown/MarkdownCollapse.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/MissingQueryResultsWarning/MissingQueryResultsWarning.js +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.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/OAuthClientManagement/OAuthManagement.js +14 -13
- package/dist/components/OAuthClientManagement/OAuthManagement.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/PortalList/PortalCard.d.ts.map +1 -1
- package/dist/components/PortalList/PortalCard.js +6 -5
- package/dist/components/PortalList/PortalCard.js.map +1 -1
- package/dist/components/PortalList/PortalList.js +4 -4
- package/dist/components/PortalList/PortalList.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +6 -6
- 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 +31 -30
- 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/QueryCountButton/QueryCountButton.js +5 -5
- package/dist/components/QueryCountButton/QueryCountButton.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/ReleaseCard/ReleaseCardLarge.js +5 -5
- package/dist/components/ReleaseCard/ReleaseCardLarge.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/ShareThisPage/ShareThisPage.js +4 -4
- package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
- package/dist/components/SustainabilityScorecard/DialLayout.js +1 -1
- package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +1 -1
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +2 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +1 -1
- package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.js +1 -1
- package/dist/components/SynapseFooter/SynapseFooter.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/SynapseHomepageV2/SynapseFeaturedDatasetItem.js +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +2 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js +4 -4
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +4 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.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/SynapseSearchPageResults/SynapseSearchPageResults.js +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +12 -9
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.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 +6 -6
- 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 +2 -2
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.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.d.ts.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 +59 -59
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js +6 -4
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.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/ColumnHeader.js +1 -1
- package/dist/components/TanStackTable/ColumnHeader.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/TeamSubjectsSelector/TeamBadgeOrError.js +1 -1
- package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.d.ts.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js +4 -3
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.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 +3 -3
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js +1 -1
- package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -1
- package/dist/components/dataaccess/EDucTemplateTable.js +13 -11
- package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -1
- package/dist/components/dataaccess/FormTemplateTable.js +6 -6
- package/dist/components/dataaccess/FormTemplateTable.js.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js +17 -17
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +4 -4
- package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.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/download_list/DownloadDetails.d.ts.map +1 -1
- package/dist/components/download_list/DownloadDetails.js +12 -10
- package/dist/components/download_list/DownloadDetails.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.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/error/ErrorChip.d.ts.map +1 -1
- package/dist/components/error/ErrorChip.js +2 -1
- package/dist/components/error/ErrorChip.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/table/CsvPreview/CreateTableFromCsvDialog.js +14 -14
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +4 -4
- package/dist/components/table/CsvPreview/CsvPreviewWithOptions.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/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js +7 -6
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +8 -8
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +4 -4
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +4 -4
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +4 -4
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +1 -1
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +10 -10
- package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js +1 -1
- package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
- 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 +17 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +62 -42
- 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/entityHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js +70 -67
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js +2 -2
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- 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/msw/server.d.ts.map +1 -1
- package/dist/mocks/msw/server.js +4 -2
- package/dist/mocks/msw/server.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/useGetUserChallenges.d.ts.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.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/theme/DefaultTheme.d.ts.map +1 -1
- package/dist/theme/DefaultTheme.js +4 -1
- package/dist/theme/DefaultTheme.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/AppUtils.js +1 -1
- package/dist/utils/AppUtils/AppUtils.js.map +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/EntityTypeUtils.d.ts.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.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 +7 -6
package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateOrUpdateCurationTaskDialog.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { DialogBase } from '@/components/DialogBase'\nimport EntityIdTextField from '@/components/EntityFinder/EntityIdTextField'\nimport { FinderScope } from '@/components/EntityFinder/tree/EntityTree'\nimport { VersionSelectionType } from '@/components/EntityFinder/VersionSelectionType'\nimport { TextField } from '@/components/TextField'\nimport { displayToast } from '@/components/ToastMessage'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport WizardChoiceButton from '@/components/WizardChoiceButton/WizardChoiceButton'\nimport WizardChoiceButtonGroup from '@/components/WizardChoiceButton/WizardChoiceButtonGroup'\nimport {\n useCreateCurationTask,\n useDeleteCurationTask,\n useGetCurationTaskStatus,\n useUpdateCurationTask,\n useUpdateCurationTaskStatus,\n} from '@/synapse-queries/curation/task/useCurationTask'\nimport { EntityTypeGroup } from '@/utils/functions/EntityTypeUtils'\nimport { HelpTwoTone } from '@mui/icons-material'\nimport Close from '@mui/icons-material/Close'\nimport {\n Alert,\n Box,\n Button,\n FormControl,\n FormControlLabel,\n FormLabel,\n Grid,\n IconButton,\n InputLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n CurationTask,\n CurationTaskProperties,\n EntityType,\n FileBasedMetadataTaskPropertiesConcreteTypeEnum,\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport {\n AUTH_MODE_CHANGED_WARNING,\n AUTH_MODE_NONE_TITLE,\n AUTH_MODE_NONE_TOOLTIP,\n AUTH_MODE_SESSION_OWNER_TITLE,\n AUTH_MODE_SESSION_OWNER_TOOLTIP,\n AUTH_MODE_SOURCE_BENEFACTOR_TITLE,\n AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP,\n COLLABORATORS_TOOLTIP,\n CREATE_CURATION_TASK_DIALOG_TITLE,\n TASK_STATUS_CONFIG,\n TASK_STATUS_INPUT_LABEL,\n DELETE_CURATION_TASK_CONFIRMATION_PROMPT,\n DELETE_CURATION_TASK_DIALOG_TITLE,\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX,\n DELETE_CURATION_TASK_GRID_SESSION_WARNING,\n DELETE_CURATION_TASK_SUCCESS_TOAST,\n EDIT_CURATION_TASK_DIALOG_TITLE,\n FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION,\n FILE_BASED_TASK_DESCRIPTION,\n FILE_BASED_TASK_TITLE,\n FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION,\n FILE_VIEW_FINDER_PROMPT,\n FILE_VIEW_FINDER_TITLE,\n GENERIC_SAVE_ERROR_MESSAGE,\n RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION,\n RECORD_BASED_TASK_DESCRIPTION,\n RECORD_BASED_TASK_TITLE,\n RECORD_SET_FINDER_PROMPT,\n RECORD_SET_FINDER_TITLE,\n SELECT_TASK_TYPE_DESCRIPTION,\n TASK_INSTRUCTIONS_INPUT_DESCRIPTION,\n TASK_NAME_INPUT_DESCRIPTION,\n UNRECOGNIZED_TASK_TYPE_ERROR,\n UPLOAD_FOLDER_FINDER_PROMPT,\n UPLOAD_FOLDER_FINDER_TITLE,\n} from '../utils/constants'\nimport noop from 'lodash-es/noop'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { StyledFormControl } from '@/components/styled'\nimport { instanceOfGridSupportedTaskProperties } from '../utils/types'\nimport { dueDateInputToIso, isoToDueDateInput } from '../utils/dueDate'\n\nexport type CreateOrUpdateCurationTaskDialogProps = {\n open: boolean\n onCancel: () => void\n onSuccess: (task: CurationTask) => void\n /**\n * Called after the task has been deleted from the dialog (edit mode only).\n * Parent is responsible for closing the dialog and any related cleanup.\n */\n onDeleteSuccess?: () => void\n projectId: string\n task?: CurationTask\n}\n\nconst FILE_BASED_CONCRETE_TYPE =\n FileBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties\nconst RECORD_BASED_CONCRETE_TYPE =\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_RecordBasedMetadataTaskProperties\n\n/** Null represents the \"Legacy\" / unset option for suggestedAuthorizationMode */\ntype AuthorizationModeOption = 'SESSION_OWNER' | 'SOURCE_BENEFACTOR' | 'NONE'\n\nfunction toAuthorizationModeOption(\n value: string | undefined,\n): AuthorizationModeOption {\n if (value === 'SESSION_OWNER' || value === 'SOURCE_BENEFACTOR') return value\n return 'NONE'\n}\n\ntype CreateOrUpdateCurationTaskDialogStep =\n | 'SELECT_TYPE'\n | 'TYPE_SPECIFIC_FIELDS'\n | 'COMMON_MUTABLE_FIELDS'\n\n/**\n * Dialog component that guides a user through creating a new CurationTask or editing an existing one.\n */\nexport default function CreateOrUpdateCurationTaskDialog(\n props: CreateOrUpdateCurationTaskDialogProps,\n) {\n const {\n open,\n onCancel,\n onSuccess,\n onDeleteSuccess = noop,\n projectId,\n task,\n } = props\n const isEditMode = task !== undefined\n const { data: permissions } = useGetEntityPermissions(projectId)\n const canDelete =\n permissions?.canDelete &&\n isEditMode &&\n task?.taskId != null &&\n props.onDeleteSuccess != null\n\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false)\n\n // In create mode: track which step we're on (1 = type selection, 2 = type-specific fields, 3 = common mutable fields)\n const [step, setStep] = useState<CreateOrUpdateCurationTaskDialogStep>(() =>\n task ? 'COMMON_MUTABLE_FIELDS' : 'SELECT_TYPE',\n )\n\n // Derive initial concrete type from the existing task (null in create mode\n // until the user picks a type in step 1)\n const [selectedConcreteType, setSelectedConcreteType] = useState<\n CurationTaskProperties['concreteType'] | null\n >(() => {\n const ct = task?.taskProperties?.concreteType\n if (ct === FILE_BASED_CONCRETE_TYPE || ct === RECORD_BASED_CONCRETE_TYPE)\n return ct\n return null\n })\n\n // Common task fields — lazily initialized from the existing task\n const [dataType, setDataType] = useState(() => task?.dataType ?? '')\n const [instructions, setInstructions] = useState(\n () => task?.instructions ?? '',\n )\n const [assigneePrincipalId, setAssigneePrincipalId] = useState<\n string | undefined\n >(() => task?.assigneePrincipalId)\n\n const initialAuthMode =\n task?.taskProperties &&\n instanceOfGridSupportedTaskProperties(task?.taskProperties)\n ? toAuthorizationModeOption(\n task?.taskProperties?.suggestedAuthorizationMode,\n )\n : 'NONE'\n\n const [authorizationMode, setAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n // Track the original value to detect unsaved changes\n const [originalAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n\n // FileBasedMetadataTaskProperties fields\n const [uploadFolderId, setUploadFolderId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.uploadFolderId ?? '')\n : ''\n })\n const [fileViewId, setFileViewId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.fileViewId ?? '')\n : ''\n })\n\n // RecordBasedMetadataTaskProperties fields\n const [recordSetId, setRecordSetId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === RECORD_BASED_CONCRETE_TYPE\n ? (tp.recordSetId ?? '')\n : ''\n })\n\n // Shared taskProperties fields\n const [collaboratorPrincipalIds, setCollaboratorPrincipalIds] = useState<\n string[]\n >(() => {\n const ids =\n task?.taskProperties &&\n instanceOfGridSupportedTaskProperties(task.taskProperties)\n ? task.taskProperties.collaboratorPrincipalIds\n : undefined\n return ids ?? []\n })\n const [pendingCollaboratorId, setPendingCollaboratorId] = useState<\n string | null\n >(null)\n\n // Task status (edit mode only)\n const { data: currentTaskStatus, isFetching: isStatusFetching } =\n useGetCurationTaskStatus(task?.taskId ?? 0, {\n enabled: isEditMode && task?.taskId != null,\n })\n // undefined = user hasn't changed the status yet\n const [pendingStatusState, setPendingStatusState] = useState<\n TaskStatusStateEnum | undefined\n >(undefined)\n const displayedStatusState = pendingStatusState ?? currentTaskStatus?.state\n\n // Due date (stored on CurationTask)\n const [pendingDueDate, setPendingDueDate] = useState<string | undefined>(\n undefined,\n )\n const displayedDueDate =\n pendingDueDate ?? (isEditMode ? isoToDueDateInput(task?.dueDate) : '')\n\n const {\n mutateAsync: createTask,\n isPending: isCreatePending,\n error: createError,\n } = useCreateCurationTask()\n\n const {\n mutateAsync: updateTask,\n isPending: isUpdatePending,\n error: updateError,\n } = useUpdateCurationTask()\n\n const {\n mutateAsync: updateTaskStatus,\n isPending: isStatusUpdatePending,\n error: statusUpdateError,\n } = useUpdateCurationTaskStatus()\n\n const { mutate: deleteTask, isPending: isDeletePending } =\n useDeleteCurationTask({\n onSuccess: () => {\n displayToast(DELETE_CURATION_TASK_SUCCESS_TOAST, 'success')\n setShowDeleteConfirmation(false)\n onDeleteSuccess()\n },\n onError: err => {\n displayToast(\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX + err.message,\n 'danger',\n )\n },\n })\n\n const isPending =\n isCreatePending ||\n isUpdatePending ||\n isDeletePending ||\n isStatusUpdatePending\n const error = createError ?? updateError ?? statusUpdateError\n\n const isTaskPropertiesValid =\n (selectedConcreteType === FILE_BASED_CONCRETE_TYPE &&\n uploadFolderId &&\n fileViewId) ||\n (selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordSetId)\n\n function buildTaskPayload(): CurationTask {\n const suggestedAuthorizationMode =\n authorizationMode === 'NONE' ? undefined : authorizationMode\n\n const concreteType = selectedConcreteType!\n let taskProperties: CurationTask['taskProperties']\n const collaborators =\n collaboratorPrincipalIds.length > 0 ? collaboratorPrincipalIds : undefined\n\n if (concreteType === FILE_BASED_CONCRETE_TYPE) {\n taskProperties = {\n concreteType: FILE_BASED_CONCRETE_TYPE,\n uploadFolderId: uploadFolderId || undefined,\n fileViewId: fileViewId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n } else {\n taskProperties = {\n concreteType: RECORD_BASED_CONCRETE_TYPE,\n recordSetId: recordSetId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n }\n\n return {\n // Spread the existing task to carry over server-managed fields (taskId, etc.)\n ...(isEditMode ? task : {}),\n projectId,\n dataType: dataType || undefined,\n instructions: instructions || undefined,\n assigneePrincipalId: assigneePrincipalId || undefined,\n // When the user hasn't changed the due date, pass the task's stored value through verbatim so\n // a field-only edit can never blank out or re-encode an existing due date.\n dueDate:\n pendingDueDate !== undefined\n ? dueDateInputToIso(pendingDueDate)\n : task?.dueDate,\n taskProperties,\n }\n }\n\n async function handleSave() {\n const payload = buildTaskPayload()\n if (isEditMode) {\n const latestTask = await updateTask(payload)\n\n const statusStateChanged =\n pendingStatusState !== undefined &&\n pendingStatusState !== currentTaskStatus?.state\n if (statusStateChanged && currentTaskStatus != null) {\n // The task and its status share an etag, and the preceding `updateTask` bumped it; the\n // status update must use the etag returned by that update, not the stale fetched one.\n await updateTaskStatus({\n ...currentTaskStatus,\n state: pendingStatusState ?? currentTaskStatus.state,\n etag: latestTask.etag,\n })\n }\n\n onSuccess(latestTask)\n } else {\n const created = await createTask(payload)\n onSuccess(created)\n }\n }\n\n const authModeChanged =\n isEditMode && authorizationMode !== originalAuthorizationMode\n\n // ── Authorization Mode radio group (shared between columns) ────────────\n const authModeField = (\n <FormControl>\n <FormLabel>Authorization Mode</FormLabel>\n <RadioGroup\n value={authorizationMode}\n onChange={(_e, v) => setAuthorizationMode(v as AuthorizationModeOption)}\n >\n <FormControlLabel\n value=\"NONE\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">{AUTH_MODE_NONE_TITLE}</Typography>\n <Tooltip title={AUTH_MODE_NONE_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SESSION_OWNER\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SESSION_OWNER_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SESSION_OWNER_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SOURCE_BENEFACTOR\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SOURCE_BENEFACTOR_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n </RadioGroup>\n </FormControl>\n )\n\n const assigneeField = (\n <Box>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel htmlFor=\"dlg-set-task-assignee\">Assignee</InputLabel>\n </Box>\n <UserSearchBox\n inputId=\"dlg-set-task-assignee\"\n key={open.toString()}\n defaultValue={assigneePrincipalId}\n onChange={id => setAssigneePrincipalId(id ?? undefined)}\n typeFilter={TYPE_FILTER.ALL}\n />\n </Box>\n )\n\n // ── Form fields (used in both step 3 create and edit mode) ──────────────\n const commonFields = (\n <Stack gap={2}>\n <TextField\n label=\"Task Name\"\n fullWidth\n value={dataType}\n onChange={e => setDataType(e.target.value)}\n required\n description={TASK_NAME_INPUT_DESCRIPTION}\n />\n <TextField\n label=\"Instructions\"\n fullWidth\n multiline\n minRows={3}\n value={instructions}\n onChange={e => setInstructions(e.target.value)}\n description={TASK_INSTRUCTIONS_INPUT_DESCRIPTION}\n />\n {/* TODO: Display the below 'collaborators' once multiple owners are supported */}\n <Box display=\"none\">\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel>Collaborators</InputLabel>\n <Tooltip title={COLLABORATORS_TOOLTIP}>\n <div>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </div>\n </Tooltip>\n </Box>\n <Stack gap={1}>\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Box flex={1}>\n <UserSearchBox\n value={pendingCollaboratorId}\n onChange={id => setPendingCollaboratorId(id)}\n typeFilter={TYPE_FILTER.ALL}\n placeholder=\"Search for a user or team\"\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (\n pendingCollaboratorId &&\n !collaboratorPrincipalIds.includes(pendingCollaboratorId)\n ) {\n setCollaboratorPrincipalIds(prev => [\n ...prev,\n pendingCollaboratorId,\n ])\n }\n setPendingCollaboratorId(null)\n }}\n disabled={!pendingCollaboratorId}\n >\n Add\n </Button>\n </Stack>\n {collaboratorPrincipalIds.map(id => (\n <Stack\n key={id}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <UserOrTeamBadge principalId={id} />\n <IconButton\n size=\"small\"\n onClick={() =>\n setCollaboratorPrincipalIds(prev =>\n prev.filter(x => x !== id),\n )\n }\n >\n <Close fontSize=\"small\" />\n </IconButton>\n </Stack>\n ))}\n </Stack>\n </Box>\n </Stack>\n )\n\n // ── TaskProperties fields ────────────────────────────────────────────────\n const fileBasedFields = (\n <Stack gap={2}>\n <EntityIdTextField\n label=\"Upload Folder ID\"\n value={uploadFolderId}\n description={FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION}\n onChange={setUploadFolderId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: UPLOAD_FOLDER_FINDER_TITLE,\n promptCopy: UPLOAD_FOLDER_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: EntityTypeGroup.CONTAINER,\n },\n }}\n />\n <EntityIdTextField\n label=\"File View ID\"\n value={fileViewId}\n description={FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION}\n onChange={setFileViewId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: FILE_VIEW_FINDER_TITLE,\n promptCopy: FILE_VIEW_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.entityview],\n },\n }}\n />\n </Stack>\n )\n\n const recordBasedFields = (\n <EntityIdTextField\n label=\"Record Set ID\"\n value={recordSetId}\n description={RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION}\n onChange={setRecordSetId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: RECORD_SET_FINDER_TITLE,\n promptCopy: RECORD_SET_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.recordset],\n },\n }}\n />\n )\n\n // ── Step 1: Type selection ───────────────────────────────────────────────\n const step1Content = (\n <Stack gap={2}>\n <Typography variant=\"body1\">{SELECT_TASK_TYPE_DESCRIPTION}</Typography>\n <WizardChoiceButtonGroup>\n <WizardChoiceButton\n title={FILE_BASED_TASK_TITLE}\n description={FILE_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(FILE_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n <WizardChoiceButton\n title={RECORD_BASED_TASK_TITLE}\n description={RECORD_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(RECORD_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n </WizardChoiceButtonGroup>\n </Stack>\n )\n\n // ── Step 2: Type-specific fields ───────────────────────────────────────────────\n const step2Content = (\n <Stack gap={2}>\n {selectedConcreteType === FILE_BASED_CONCRETE_TYPE && fileBasedFields}\n {selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordBasedFields}\n </Stack>\n )\n\n // ── Step 3 / edit form content ───────────────────────────────────────────\n const step3Content = (\n <Stack gap={3}>\n <Grid container spacing={3} alignItems=\"flex-start\">\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={2}>{commonFields}</Stack>\n </Grid>\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={3}>\n {isEditMode && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"dlg-task-status-label\">\n {TASK_STATUS_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"dlg-task-status-label\"\n value={displayedStatusState ?? ''}\n label={TASK_STATUS_INPUT_LABEL}\n disabled={isStatusFetching || currentTaskStatus == null}\n onChange={e =>\n setPendingStatusState(e.target.value as TaskStatusStateEnum)\n }\n >\n {Object.values(TaskStatusStateEnum).map(state => (\n <MenuItem key={state} value={state}>\n {TASK_STATUS_CONFIG[state].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n )}\n {isEditMode && (\n <Box>\n <TextField\n label=\"Due Date\"\n fullWidth\n type=\"date\"\n value={displayedDueDate}\n onChange={e => setPendingDueDate(e.target.value)}\n disabled={isStatusFetching}\n slotProps={{ inputLabel: { shrink: true } }}\n />\n </Box>\n )}\n {assigneeField}\n {authModeField}\n </Stack>\n </Grid>\n </Grid>\n\n {isEditMode && selectedConcreteType === null && (\n <Alert severity=\"error\">{UNRECOGNIZED_TASK_TYPE_ERROR}</Alert>\n )}\n {authModeChanged && (\n <Alert severity=\"warning\">{AUTH_MODE_CHANGED_WARNING}</Alert>\n )}\n {error && (\n <Alert severity=\"error\">\n {error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n )\n\n const title = isEditMode\n ? EDIT_CURATION_TASK_DIALOG_TITLE\n : CREATE_CURATION_TASK_DIALOG_TITLE\n\n let dialogContent = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogContent = step1Content\n break\n case 'TYPE_SPECIFIC_FIELDS':\n dialogContent = step2Content\n break\n case 'COMMON_MUTABLE_FIELDS':\n dialogContent = step3Content\n break\n }\n\n let dialogActions = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogActions = null\n break\n case 'TYPE_SPECIFIC_FIELDS': {\n dialogActions = (\n <>\n <Button\n variant=\"outlined\"\n onClick={() => setStep('SELECT_TYPE')}\n disabled={isPending}\n >\n Back\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => setStep('COMMON_MUTABLE_FIELDS')}\n disabled={isPending || !isTaskPropertiesValid}\n >\n Next\n </Button>\n </>\n )\n break\n }\n case 'COMMON_MUTABLE_FIELDS': {\n dialogActions = (\n <>\n {!isEditMode && (\n <Button\n variant=\"outlined\"\n onClick={() => setStep('TYPE_SPECIFIC_FIELDS')}\n disabled={isPending}\n >\n Back\n </Button>\n )}\n <Button\n variant=\"contained\"\n // errors surfaced via react-query error state\n onClick={() => void handleSave().catch(noop)}\n disabled={isPending || selectedConcreteType === null}\n >\n Save\n </Button>\n </>\n )\n break\n }\n }\n\n return (\n <>\n <DialogBase\n open={open}\n title={title}\n maxWidth=\"md\"\n fullWidth\n onCancel={onCancel}\n content={dialogContent}\n actions={\n <Stack\n direction=\"row\"\n gap={1}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Box>\n {canDelete && (\n <Button\n variant=\"outlined\"\n color=\"error\"\n onClick={() => setShowDeleteConfirmation(true)}\n disabled={isPending}\n >\n Delete\n </Button>\n )}\n </Box>\n <Stack direction=\"row\" gap={1}>\n {dialogActions}\n </Stack>\n </Stack>\n }\n />\n <ConfirmationDialog\n title={DELETE_CURATION_TASK_DIALOG_TITLE}\n open={showDeleteConfirmation}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\">\n {DELETE_CURATION_TASK_CONFIRMATION_PROMPT}\n </Typography>\n <Alert severity=\"warning\">\n {DELETE_CURATION_TASK_GRID_SESSION_WARNING}\n </Alert>\n </Stack>\n }\n confirmButtonProps={{\n children: 'Delete',\n color: 'error',\n loading: isDeletePending,\n }}\n onConfirm={() => {\n if (task?.taskId != null) deleteTask(task.taskId)\n }}\n onCancel={() => setShowDeleteConfirmation(false)}\n />\n </>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateOrUpdateCurationTaskDialog.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { DialogBase } from '@/components/DialogBase'\nimport EntityIdTextField from '@/components/EntityFinder/EntityIdTextField'\nimport { FinderScope } from '@/components/EntityFinder/tree/EntityTree'\nimport { VersionSelectionType } from '@/components/EntityFinder/VersionSelectionType'\nimport { TextField } from '@/components/TextField'\nimport { displayToast } from '@/components/ToastMessage'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport WizardChoiceButton from '@/components/WizardChoiceButton/WizardChoiceButton'\nimport WizardChoiceButtonGroup from '@/components/WizardChoiceButton/WizardChoiceButtonGroup'\nimport {\n useCreateCurationTask,\n useDeleteCurationTask,\n useGetCurationTaskStatus,\n useUpdateCurationTask,\n useUpdateCurationTaskStatus,\n} from '@/synapse-queries/curation/task/useCurationTask'\nimport { EntityTypeGroup } from '@/utils/functions/EntityTypeUtils'\nimport HelpTwoTone from '@mui/icons-material/HelpTwoTone'\nimport Close from '@mui/icons-material/Close'\nimport {\n Alert,\n Box,\n Button,\n FormControl,\n FormControlLabel,\n FormLabel,\n Grid,\n IconButton,\n InputLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n CurationTask,\n CurationTaskProperties,\n EntityType,\n FileBasedMetadataTaskPropertiesConcreteTypeEnum,\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport {\n AUTH_MODE_CHANGED_WARNING,\n AUTH_MODE_NONE_TITLE,\n AUTH_MODE_NONE_TOOLTIP,\n AUTH_MODE_SESSION_OWNER_TITLE,\n AUTH_MODE_SESSION_OWNER_TOOLTIP,\n AUTH_MODE_SOURCE_BENEFACTOR_TITLE,\n AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP,\n COLLABORATORS_TOOLTIP,\n CREATE_CURATION_TASK_DIALOG_TITLE,\n TASK_STATUS_CONFIG,\n TASK_STATUS_INPUT_LABEL,\n DELETE_CURATION_TASK_CONFIRMATION_PROMPT,\n DELETE_CURATION_TASK_DIALOG_TITLE,\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX,\n DELETE_CURATION_TASK_GRID_SESSION_WARNING,\n DELETE_CURATION_TASK_SUCCESS_TOAST,\n EDIT_CURATION_TASK_DIALOG_TITLE,\n FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION,\n FILE_BASED_TASK_DESCRIPTION,\n FILE_BASED_TASK_TITLE,\n FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION,\n FILE_VIEW_FINDER_PROMPT,\n FILE_VIEW_FINDER_TITLE,\n GENERIC_SAVE_ERROR_MESSAGE,\n RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION,\n RECORD_BASED_TASK_DESCRIPTION,\n RECORD_BASED_TASK_TITLE,\n RECORD_SET_FINDER_PROMPT,\n RECORD_SET_FINDER_TITLE,\n SELECT_TASK_TYPE_DESCRIPTION,\n TASK_INSTRUCTIONS_INPUT_DESCRIPTION,\n TASK_NAME_INPUT_DESCRIPTION,\n UNRECOGNIZED_TASK_TYPE_ERROR,\n UPLOAD_FOLDER_FINDER_PROMPT,\n UPLOAD_FOLDER_FINDER_TITLE,\n} from '../utils/constants'\nimport noop from 'lodash-es/noop'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { StyledFormControl } from '@/components/styled'\nimport { instanceOfGridSupportedTaskProperties } from '../utils/types'\nimport { dueDateInputToIso, isoToDueDateInput } from '../utils/dueDate'\n\nexport type CreateOrUpdateCurationTaskDialogProps = {\n open: boolean\n onCancel: () => void\n onSuccess: (task: CurationTask) => void\n /**\n * Called after the task has been deleted from the dialog (edit mode only).\n * Parent is responsible for closing the dialog and any related cleanup.\n */\n onDeleteSuccess?: () => void\n projectId: string\n task?: CurationTask\n}\n\nconst FILE_BASED_CONCRETE_TYPE =\n FileBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties\nconst RECORD_BASED_CONCRETE_TYPE =\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_RecordBasedMetadataTaskProperties\n\n/** Null represents the \"Legacy\" / unset option for suggestedAuthorizationMode */\ntype AuthorizationModeOption = 'SESSION_OWNER' | 'SOURCE_BENEFACTOR' | 'NONE'\n\nfunction toAuthorizationModeOption(\n value: string | undefined,\n): AuthorizationModeOption {\n if (value === 'SESSION_OWNER' || value === 'SOURCE_BENEFACTOR') return value\n return 'NONE'\n}\n\ntype CreateOrUpdateCurationTaskDialogStep =\n | 'SELECT_TYPE'\n | 'TYPE_SPECIFIC_FIELDS'\n | 'COMMON_MUTABLE_FIELDS'\n\n/**\n * Dialog component that guides a user through creating a new CurationTask or editing an existing one.\n */\nexport default function CreateOrUpdateCurationTaskDialog(\n props: CreateOrUpdateCurationTaskDialogProps,\n) {\n const {\n open,\n onCancel,\n onSuccess,\n onDeleteSuccess = noop,\n projectId,\n task,\n } = props\n const isEditMode = task !== undefined\n const { data: permissions } = useGetEntityPermissions(projectId)\n const canDelete =\n permissions?.canDelete &&\n isEditMode &&\n task?.taskId != null &&\n props.onDeleteSuccess != null\n\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false)\n\n // In create mode: track which step we're on (1 = type selection, 2 = type-specific fields, 3 = common mutable fields)\n const [step, setStep] = useState<CreateOrUpdateCurationTaskDialogStep>(() =>\n task ? 'COMMON_MUTABLE_FIELDS' : 'SELECT_TYPE',\n )\n\n // Derive initial concrete type from the existing task (null in create mode\n // until the user picks a type in step 1)\n const [selectedConcreteType, setSelectedConcreteType] = useState<\n CurationTaskProperties['concreteType'] | null\n >(() => {\n const ct = task?.taskProperties?.concreteType\n if (ct === FILE_BASED_CONCRETE_TYPE || ct === RECORD_BASED_CONCRETE_TYPE)\n return ct\n return null\n })\n\n // Common task fields — lazily initialized from the existing task\n const [dataType, setDataType] = useState(() => task?.dataType ?? '')\n const [instructions, setInstructions] = useState(\n () => task?.instructions ?? '',\n )\n const [assigneePrincipalId, setAssigneePrincipalId] = useState<\n string | undefined\n >(() => task?.assigneePrincipalId)\n\n const initialAuthMode =\n task?.taskProperties &&\n instanceOfGridSupportedTaskProperties(task?.taskProperties)\n ? toAuthorizationModeOption(\n task?.taskProperties?.suggestedAuthorizationMode,\n )\n : 'NONE'\n\n const [authorizationMode, setAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n // Track the original value to detect unsaved changes\n const [originalAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n\n // FileBasedMetadataTaskProperties fields\n const [uploadFolderId, setUploadFolderId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.uploadFolderId ?? '')\n : ''\n })\n const [fileViewId, setFileViewId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.fileViewId ?? '')\n : ''\n })\n\n // RecordBasedMetadataTaskProperties fields\n const [recordSetId, setRecordSetId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === RECORD_BASED_CONCRETE_TYPE\n ? (tp.recordSetId ?? '')\n : ''\n })\n\n // Shared taskProperties fields\n const [collaboratorPrincipalIds, setCollaboratorPrincipalIds] = useState<\n string[]\n >(() => {\n const ids =\n task?.taskProperties &&\n instanceOfGridSupportedTaskProperties(task.taskProperties)\n ? task.taskProperties.collaboratorPrincipalIds\n : undefined\n return ids ?? []\n })\n const [pendingCollaboratorId, setPendingCollaboratorId] = useState<\n string | null\n >(null)\n\n // Task status (edit mode only)\n const { data: currentTaskStatus, isFetching: isStatusFetching } =\n useGetCurationTaskStatus(task?.taskId ?? 0, {\n enabled: isEditMode && task?.taskId != null,\n })\n // undefined = user hasn't changed the status yet\n const [pendingStatusState, setPendingStatusState] = useState<\n TaskStatusStateEnum | undefined\n >(undefined)\n const displayedStatusState = pendingStatusState ?? currentTaskStatus?.state\n\n // Due date (stored on CurationTask)\n const [pendingDueDate, setPendingDueDate] = useState<string | undefined>(\n undefined,\n )\n const displayedDueDate =\n pendingDueDate ?? (isEditMode ? isoToDueDateInput(task?.dueDate) : '')\n\n const {\n mutateAsync: createTask,\n isPending: isCreatePending,\n error: createError,\n } = useCreateCurationTask()\n\n const {\n mutateAsync: updateTask,\n isPending: isUpdatePending,\n error: updateError,\n } = useUpdateCurationTask()\n\n const {\n mutateAsync: updateTaskStatus,\n isPending: isStatusUpdatePending,\n error: statusUpdateError,\n } = useUpdateCurationTaskStatus()\n\n const { mutate: deleteTask, isPending: isDeletePending } =\n useDeleteCurationTask({\n onSuccess: () => {\n displayToast(DELETE_CURATION_TASK_SUCCESS_TOAST, 'success')\n setShowDeleteConfirmation(false)\n onDeleteSuccess()\n },\n onError: err => {\n displayToast(\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX + err.message,\n 'danger',\n )\n },\n })\n\n const isPending =\n isCreatePending ||\n isUpdatePending ||\n isDeletePending ||\n isStatusUpdatePending\n const error = createError ?? updateError ?? statusUpdateError\n\n const isTaskPropertiesValid =\n (selectedConcreteType === FILE_BASED_CONCRETE_TYPE &&\n uploadFolderId &&\n fileViewId) ||\n (selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordSetId)\n\n function buildTaskPayload(): CurationTask {\n const suggestedAuthorizationMode =\n authorizationMode === 'NONE' ? undefined : authorizationMode\n\n const concreteType = selectedConcreteType!\n let taskProperties: CurationTask['taskProperties']\n const collaborators =\n collaboratorPrincipalIds.length > 0 ? collaboratorPrincipalIds : undefined\n\n if (concreteType === FILE_BASED_CONCRETE_TYPE) {\n taskProperties = {\n concreteType: FILE_BASED_CONCRETE_TYPE,\n uploadFolderId: uploadFolderId || undefined,\n fileViewId: fileViewId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n } else {\n taskProperties = {\n concreteType: RECORD_BASED_CONCRETE_TYPE,\n recordSetId: recordSetId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n }\n\n return {\n // Spread the existing task to carry over server-managed fields (taskId, etc.)\n ...(isEditMode ? task : {}),\n projectId,\n dataType: dataType || undefined,\n instructions: instructions || undefined,\n assigneePrincipalId: assigneePrincipalId || undefined,\n // When the user hasn't changed the due date, pass the task's stored value through verbatim so\n // a field-only edit can never blank out or re-encode an existing due date.\n dueDate:\n pendingDueDate !== undefined\n ? dueDateInputToIso(pendingDueDate)\n : task?.dueDate,\n taskProperties,\n }\n }\n\n async function handleSave() {\n const payload = buildTaskPayload()\n if (isEditMode) {\n const latestTask = await updateTask(payload)\n\n const statusStateChanged =\n pendingStatusState !== undefined &&\n pendingStatusState !== currentTaskStatus?.state\n if (statusStateChanged && currentTaskStatus != null) {\n // The task and its status share an etag, and the preceding `updateTask` bumped it; the\n // status update must use the etag returned by that update, not the stale fetched one.\n await updateTaskStatus({\n ...currentTaskStatus,\n state: pendingStatusState ?? currentTaskStatus.state,\n etag: latestTask.etag,\n })\n }\n\n onSuccess(latestTask)\n } else {\n const created = await createTask(payload)\n onSuccess(created)\n }\n }\n\n const authModeChanged =\n isEditMode && authorizationMode !== originalAuthorizationMode\n\n // ── Authorization Mode radio group (shared between columns) ────────────\n const authModeField = (\n <FormControl>\n <FormLabel>Authorization Mode</FormLabel>\n <RadioGroup\n value={authorizationMode}\n onChange={(_e, v) => setAuthorizationMode(v as AuthorizationModeOption)}\n >\n <FormControlLabel\n value=\"NONE\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">{AUTH_MODE_NONE_TITLE}</Typography>\n <Tooltip title={AUTH_MODE_NONE_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SESSION_OWNER\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SESSION_OWNER_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SESSION_OWNER_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SOURCE_BENEFACTOR\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SOURCE_BENEFACTOR_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n </RadioGroup>\n </FormControl>\n )\n\n const assigneeField = (\n <Box>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel htmlFor=\"dlg-set-task-assignee\">Assignee</InputLabel>\n </Box>\n <UserSearchBox\n inputId=\"dlg-set-task-assignee\"\n key={open.toString()}\n defaultValue={assigneePrincipalId}\n onChange={id => setAssigneePrincipalId(id ?? undefined)}\n typeFilter={TYPE_FILTER.ALL}\n />\n </Box>\n )\n\n // ── Form fields (used in both step 3 create and edit mode) ──────────────\n const commonFields = (\n <Stack gap={2}>\n <TextField\n label=\"Task Name\"\n fullWidth\n value={dataType}\n onChange={e => setDataType(e.target.value)}\n required\n description={TASK_NAME_INPUT_DESCRIPTION}\n />\n <TextField\n label=\"Instructions\"\n fullWidth\n multiline\n minRows={3}\n value={instructions}\n onChange={e => setInstructions(e.target.value)}\n description={TASK_INSTRUCTIONS_INPUT_DESCRIPTION}\n />\n {/* TODO: Display the below 'collaborators' once multiple owners are supported */}\n <Box display=\"none\">\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel>Collaborators</InputLabel>\n <Tooltip title={COLLABORATORS_TOOLTIP}>\n <div>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </div>\n </Tooltip>\n </Box>\n <Stack gap={1}>\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Box flex={1}>\n <UserSearchBox\n value={pendingCollaboratorId}\n onChange={id => setPendingCollaboratorId(id)}\n typeFilter={TYPE_FILTER.ALL}\n placeholder=\"Search for a user or team\"\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (\n pendingCollaboratorId &&\n !collaboratorPrincipalIds.includes(pendingCollaboratorId)\n ) {\n setCollaboratorPrincipalIds(prev => [\n ...prev,\n pendingCollaboratorId,\n ])\n }\n setPendingCollaboratorId(null)\n }}\n disabled={!pendingCollaboratorId}\n >\n Add\n </Button>\n </Stack>\n {collaboratorPrincipalIds.map(id => (\n <Stack\n key={id}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <UserOrTeamBadge principalId={id} />\n <IconButton\n size=\"small\"\n onClick={() =>\n setCollaboratorPrincipalIds(prev =>\n prev.filter(x => x !== id),\n )\n }\n >\n <Close fontSize=\"small\" />\n </IconButton>\n </Stack>\n ))}\n </Stack>\n </Box>\n </Stack>\n )\n\n // ── TaskProperties fields ────────────────────────────────────────────────\n const fileBasedFields = (\n <Stack gap={2}>\n <EntityIdTextField\n label=\"Upload Folder ID\"\n value={uploadFolderId}\n description={FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION}\n onChange={setUploadFolderId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: UPLOAD_FOLDER_FINDER_TITLE,\n promptCopy: UPLOAD_FOLDER_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: EntityTypeGroup.CONTAINER,\n },\n }}\n />\n <EntityIdTextField\n label=\"File View ID\"\n value={fileViewId}\n description={FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION}\n onChange={setFileViewId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: FILE_VIEW_FINDER_TITLE,\n promptCopy: FILE_VIEW_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.entityview],\n },\n }}\n />\n </Stack>\n )\n\n const recordBasedFields = (\n <EntityIdTextField\n label=\"Record Set ID\"\n value={recordSetId}\n description={RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION}\n onChange={setRecordSetId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: RECORD_SET_FINDER_TITLE,\n promptCopy: RECORD_SET_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.recordset],\n },\n }}\n />\n )\n\n // ── Step 1: Type selection ───────────────────────────────────────────────\n const step1Content = (\n <Stack gap={2}>\n <Typography variant=\"body1\">{SELECT_TASK_TYPE_DESCRIPTION}</Typography>\n <WizardChoiceButtonGroup>\n <WizardChoiceButton\n title={FILE_BASED_TASK_TITLE}\n description={FILE_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(FILE_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n <WizardChoiceButton\n title={RECORD_BASED_TASK_TITLE}\n description={RECORD_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(RECORD_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n </WizardChoiceButtonGroup>\n </Stack>\n )\n\n // ── Step 2: Type-specific fields ───────────────────────────────────────────────\n const step2Content = (\n <Stack gap={2}>\n {selectedConcreteType === FILE_BASED_CONCRETE_TYPE && fileBasedFields}\n {selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordBasedFields}\n </Stack>\n )\n\n // ── Step 3 / edit form content ───────────────────────────────────────────\n const step3Content = (\n <Stack gap={3}>\n <Grid container spacing={3} alignItems=\"flex-start\">\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={2}>{commonFields}</Stack>\n </Grid>\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={3}>\n {isEditMode && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"dlg-task-status-label\">\n {TASK_STATUS_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"dlg-task-status-label\"\n value={displayedStatusState ?? ''}\n label={TASK_STATUS_INPUT_LABEL}\n disabled={isStatusFetching || currentTaskStatus == null}\n onChange={e =>\n setPendingStatusState(e.target.value as TaskStatusStateEnum)\n }\n >\n {Object.values(TaskStatusStateEnum).map(state => (\n <MenuItem key={state} value={state}>\n {TASK_STATUS_CONFIG[state].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n )}\n {isEditMode && (\n <Box>\n <TextField\n label=\"Due Date\"\n fullWidth\n type=\"date\"\n value={displayedDueDate}\n onChange={e => setPendingDueDate(e.target.value)}\n disabled={isStatusFetching}\n slotProps={{ inputLabel: { shrink: true } }}\n />\n </Box>\n )}\n {assigneeField}\n {authModeField}\n </Stack>\n </Grid>\n </Grid>\n\n {isEditMode && selectedConcreteType === null && (\n <Alert severity=\"error\">{UNRECOGNIZED_TASK_TYPE_ERROR}</Alert>\n )}\n {authModeChanged && (\n <Alert severity=\"warning\">{AUTH_MODE_CHANGED_WARNING}</Alert>\n )}\n {error && (\n <Alert severity=\"error\">\n {error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n )\n\n const title = isEditMode\n ? EDIT_CURATION_TASK_DIALOG_TITLE\n : CREATE_CURATION_TASK_DIALOG_TITLE\n\n let dialogContent = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogContent = step1Content\n break\n case 'TYPE_SPECIFIC_FIELDS':\n dialogContent = step2Content\n break\n case 'COMMON_MUTABLE_FIELDS':\n dialogContent = step3Content\n break\n }\n\n let dialogActions = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogActions = null\n break\n case 'TYPE_SPECIFIC_FIELDS': {\n dialogActions = (\n <>\n <Button\n variant=\"outlined\"\n onClick={() => setStep('SELECT_TYPE')}\n disabled={isPending}\n >\n Back\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => setStep('COMMON_MUTABLE_FIELDS')}\n disabled={isPending || !isTaskPropertiesValid}\n >\n Next\n </Button>\n </>\n )\n break\n }\n case 'COMMON_MUTABLE_FIELDS': {\n dialogActions = (\n <>\n {!isEditMode && (\n <Button\n variant=\"outlined\"\n onClick={() => setStep('TYPE_SPECIFIC_FIELDS')}\n disabled={isPending}\n >\n Back\n </Button>\n )}\n <Button\n variant=\"contained\"\n // errors surfaced via react-query error state\n onClick={() => void handleSave().catch(noop)}\n disabled={isPending || selectedConcreteType === null}\n >\n Save\n </Button>\n </>\n )\n break\n }\n }\n\n return (\n <>\n <DialogBase\n open={open}\n title={title}\n maxWidth=\"md\"\n fullWidth\n onCancel={onCancel}\n content={dialogContent}\n actions={\n <Stack\n direction=\"row\"\n gap={1}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Box>\n {canDelete && (\n <Button\n variant=\"outlined\"\n color=\"error\"\n onClick={() => setShowDeleteConfirmation(true)}\n disabled={isPending}\n >\n Delete\n </Button>\n )}\n </Box>\n <Stack direction=\"row\" gap={1}>\n {dialogActions}\n </Stack>\n </Stack>\n }\n />\n <ConfirmationDialog\n title={DELETE_CURATION_TASK_DIALOG_TITLE}\n open={showDeleteConfirmation}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\">\n {DELETE_CURATION_TASK_CONFIRMATION_PROMPT}\n </Typography>\n <Alert severity=\"warning\">\n {DELETE_CURATION_TASK_GRID_SESSION_WARNING}\n </Alert>\n </Stack>\n }\n confirmButtonProps={{\n children: 'Delete',\n color: 'error',\n loading: isDeletePending,\n }}\n onConfirm={() => {\n if (task?.taskId != null) deleteTask(task.taskId)\n }}\n onCancel={() => setShowDeleteConfirmation(false)}\n />\n </>\n )\n}\n"],"mappings":"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"}
|
|
@@ -2,11 +2,11 @@ import { OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE as e, OPEN_CURATOR_T
|
|
|
2
2
|
import n from "../hooks/useOpenCuratorButton.js";
|
|
3
3
|
import { Box as r, Button as i, Tooltip as a } from "@mui/material";
|
|
4
4
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
5
|
+
import { useNavigate as c } from "react-router";
|
|
6
|
+
import l from "@mui/icons-material/StickyNote2Outlined";
|
|
7
7
|
//#region src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx
|
|
8
8
|
function u(u) {
|
|
9
|
-
let { canEdit: d, taskBundle: f } = u, p =
|
|
9
|
+
let { canEdit: d, taskBundle: f } = u, p = c(), { hasPermission: m, isLoading: h, isPending: g, onClick: _ } = n(f), v = g || h || !m, y;
|
|
10
10
|
return m === !0 ? y = t : m === !1 && (y = e), /* @__PURE__ */ s(r, {
|
|
11
11
|
sx: {
|
|
12
12
|
display: "flex",
|
|
@@ -23,7 +23,7 @@ function u(u) {
|
|
|
23
23
|
children: /* @__PURE__ */ o("span", { children: /* @__PURE__ */ o(i, {
|
|
24
24
|
variant: "contained",
|
|
25
25
|
size: "small",
|
|
26
|
-
startIcon: /* @__PURE__ */ o(
|
|
26
|
+
startIcon: /* @__PURE__ */ o(l, {}),
|
|
27
27
|
loading: g,
|
|
28
28
|
disabled: v,
|
|
29
29
|
onClick: _,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataTaskTableActionCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"MetadataTaskTableActionCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx"],"sourcesContent":["import StickyNote2Outlined from '@mui/icons-material/StickyNote2Outlined'\nimport { Box, Button, Tooltip } from '@mui/material'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport { useNavigate } from 'react-router'\nimport useOpenCuratorFromTaskButton from '../hooks/useOpenCuratorButton'\nimport {\n OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE,\n OPEN_CURATOR_TOOLTIP_TITLE,\n} from '../utils/constants'\n\n/**\n * Handles rendering the 'Actions' cell in the Metadata Task table, which provides buttons for the user\n * to accomplish the actions they can take on a Metadata Task, such as opening a data grid for the entity referenced\n * by the task.\n */\nexport default function MetadataTaskTableActionCell(props: {\n taskBundle: TaskBundle\n canEdit: boolean\n}) {\n const { canEdit, taskBundle } = props\n const navigate = useNavigate()\n\n const { hasPermission, isLoading, isPending, onClick } =\n useOpenCuratorFromTaskButton(taskBundle)\n\n const disableButton = isPending || isLoading || !hasPermission\n let tooltipTitle: string | undefined = undefined\n if (hasPermission === true) {\n tooltipTitle = OPEN_CURATOR_TOOLTIP_TITLE\n } else if (hasPermission === false) {\n tooltipTitle = OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE\n }\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'row', gap: 1 }}>\n {canEdit && (\n <Button\n variant=\"outlined\"\n onClick={() => void navigate(`edit/${taskBundle.task!.taskId}`)}\n size={'small'}\n >\n Edit\n </Button>\n )}\n <Tooltip title={tooltipTitle}>\n <span>\n <Button\n variant=\"contained\"\n size={'small'}\n startIcon={<StickyNote2Outlined />}\n loading={isPending}\n disabled={disableButton}\n onClick={onClick}\n >\n Open Curator\n </Button>\n </span>\n </Tooltip>\n </Box>\n )\n}\n"],"mappings":";;;;;;;AAeA,SAAwB,EAA4B,GAGjD;CACD,IAAM,EAAE,YAAS,kBAAe,GAC1B,IAAW,EAAY,GAEvB,EAAE,kBAAe,cAAW,cAAW,eAC3C,EAA6B,CAAU,GAEnC,IAAgB,KAAa,KAAa,CAAC,GAC7C;CAOJ,OANI,MAAkB,KACpB,IAAe,IACN,MAAkB,OAC3B,IAAe,IAIf,kBAAC,GAAD;EAAK,IAAI;GAAE,SAAS;GAAQ,eAAe;GAAO,KAAK;EAAE;YAAzD,CACG,KACC,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe,KAAK,EAAS,QAAQ,EAAW,KAAM,QAAQ;GAC9D,MAAM;aACP;EAEO,CAAA,GAEV,kBAAC,GAAD;GAAS,OAAO;aACd,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;IACE,SAAQ;IACR,MAAM;IACN,WAAW,kBAAC,GAAD,CAAsB,CAAA;IACjC,SAAS;IACT,UAAU;IACD;cACV;GAEO,CAAA,EACJ,CAAA;EACC,CAAA,CACN;;AAET"}
|
|
@@ -11,11 +11,11 @@ import c from "./MetadataTasksPageRouter.js";
|
|
|
11
11
|
import { useMemo as l } from "react";
|
|
12
12
|
import { Button as u, FormControlLabel as d, Stack as f, Switch as p } from "@mui/material";
|
|
13
13
|
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
14
|
+
import { useNavigate as g } from "react-router";
|
|
15
|
+
import _ from "@mui/icons-material/AddCircleTwoTone";
|
|
16
16
|
//#region src/features/entity/metadata-task/components/MetadataTasksPage.tsx
|
|
17
17
|
function v(c) {
|
|
18
|
-
let { projectId: v } = c, y =
|
|
18
|
+
let { projectId: v } = c, y = g(), { request: b, taskIds: x, assignedToMe: S, setAssignedToMe: C, clearTaskIdsFilter: w } = r({ projectId: v }), { data: T } = e(v), { data: E, isLoading: D, hasNextPage: O, fetchNextPage: k, isFetchingNextPage: A } = a(b), j = l(() => E?.pages.flatMap((e) => e.bundlePage ?? []) ?? [], [E]), M = t(i.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON);
|
|
19
19
|
return /* @__PURE__ */ h(f, { children: [
|
|
20
20
|
/* @__PURE__ */ h(f, {
|
|
21
21
|
direction: "row",
|
|
@@ -31,7 +31,7 @@ function v(c) {
|
|
|
31
31
|
}), M && T?.canAddChild && /* @__PURE__ */ m(u, {
|
|
32
32
|
variant: "outlined",
|
|
33
33
|
onClick: () => void y("create"),
|
|
34
|
-
startIcon: /* @__PURE__ */ m(
|
|
34
|
+
startIcon: /* @__PURE__ */ m(_, {}),
|
|
35
35
|
children: "New Task"
|
|
36
36
|
})]
|
|
37
37
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataTasksPage.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport CurationTaskCard from '@/features/curator/dashboard/components/CurationTaskCard'\nimport FilteredByTaskIdsBanner from '@/features/curator/dashboard/components/FilteredByTaskIdsBanner'\nimport { useGetCurationTasksInfinite } from '@/synapse-queries/curation/task/useCurationTask'\nimport { useGetFeatureFlag } from '@/synapse-queries/index'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { useCurationTaskListFilters } from '@/utils/hooks/useCurationTaskListFilters'\nimport { Button, FormControlLabel, Stack, Switch } from '@mui/material'\nimport { useMemo } from 'react'\nimport
|
|
1
|
+
{"version":3,"file":"MetadataTasksPage.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport CurationTaskCard from '@/features/curator/dashboard/components/CurationTaskCard'\nimport FilteredByTaskIdsBanner from '@/features/curator/dashboard/components/FilteredByTaskIdsBanner'\nimport { useGetCurationTasksInfinite } from '@/synapse-queries/curation/task/useCurationTask'\nimport { useGetFeatureFlag } from '@/synapse-queries/index'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { useCurationTaskListFilters } from '@/utils/hooks/useCurationTaskListFilters'\nimport { Button, FormControlLabel, Stack, Switch } from '@mui/material'\nimport { useMemo } from 'react'\nimport AddCircleTwoTone from '@mui/icons-material/AddCircleTwoTone'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport { useNavigate } from 'react-router'\nimport MetadataTasksPageRouter, {\n MetadataTasksPageRouterProps,\n} from './MetadataTasksPageRouter'\n\nexport type MetadataTaskTableProps = {\n projectId: string\n}\n\n/**\n * Displays a list of metadata curation tasks for a particular project, with actions that can be performed on each task.\n */\nfunction MetadataTasksPageInternal(props: MetadataTaskTableProps) {\n const { projectId } = props\n const navigate = useNavigate()\n const {\n request,\n taskIds,\n assignedToMe,\n setAssignedToMe,\n clearTaskIdsFilter,\n } = useCurationTaskListFilters({ projectId })\n\n const { data: permissions } = useGetEntityPermissions(projectId)\n\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetCurationTasksInfinite(request)\n\n const tasks = useMemo(\n () => data?.pages.flatMap(page => page.bundlePage ?? []) ?? [],\n [data],\n )\n\n const showNewTaskButton = useGetFeatureFlag(\n FeatureFlagEnum.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON,\n )\n\n return (\n <Stack>\n <Stack direction=\"row\" justifyContent=\"flex-end\">\n <FormControlLabel\n control={\n <Switch\n checked={assignedToMe}\n onChange={(_e, checked) => {\n setAssignedToMe(checked)\n }}\n />\n }\n label=\"View only tasks assigned to me\"\n />\n {showNewTaskButton && permissions?.canAddChild && (\n <Button\n variant=\"outlined\"\n onClick={() => void navigate('create')}\n startIcon={<AddCircleTwoTone />}\n >\n New Task\n </Button>\n )}\n </Stack>\n <FilteredByTaskIdsBanner taskIds={taskIds} onClear={clearTaskIdsFilter} />\n <InfiniteTableLayout\n table={\n <Stack gap={3} sx={{ my: 2 }}>\n {tasks.map(taskBundle => (\n <CurationTaskCard\n key={taskBundle.task?.taskId}\n taskBundle={taskBundle}\n />\n ))}\n </Stack>\n }\n isLoading={isLoading}\n isEmpty={!isLoading && tasks.length === 0}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => void fetchNextPage()}\n isFetchingNextPage={isFetchingNextPage}\n />\n </Stack>\n )\n}\n\nexport type MetadataTasksPageProps = MetadataTaskTableProps &\n Omit<MetadataTasksPageRouterProps, 'projectId'>\n\n/**\n * A page that displays a project's metadata curation tasks, with included routing logic for the\n * create/edit task pages.\n */\nexport default function MetadataTasksPage(props: MetadataTasksPageProps) {\n return <MetadataTasksPageRouter {...props} />\n}\n\nexport { MetadataTasksPageInternal }\n"],"mappings":";;;;;;;;;;;;;;;;AAuBA,SAAS,EAA0B,GAA+B;CAChE,IAAM,EAAE,iBAAc,GAChB,IAAW,EAAY,GACvB,EACJ,YACA,YACA,iBACA,oBACA,0BACE,EAA2B,EAAE,aAAU,CAAC,GAEtC,EAAE,MAAM,MAAgB,EAAwB,CAAS,GAEzD,EAAE,SAAM,cAAW,gBAAa,kBAAe,0BACnD,EAA4B,CAAO,GAE/B,IAAQ,QACN,GAAM,MAAM,SAAQ,MAAQ,EAAK,cAAc,CAAC,CAAC,KAAK,CAAC,GAC7D,CAAC,CAAI,CACP,GAEM,IAAoB,EACxB,EAAgB,uCAClB;CAEA,OACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAO,WAAU;GAAM,gBAAe;aAAtC,CACE,kBAAC,GAAD;IACE,SACE,kBAAC,GAAD;KACE,SAAS;KACT,WAAW,GAAI,MAAY;MACzB,EAAgB,CAAO;KACzB;IACD,CAAA;IAEH,OAAM;GACP,CAAA,GACA,KAAqB,GAAa,eACjC,kBAAC,GAAD;IACE,SAAQ;IACR,eAAe,KAAK,EAAS,QAAQ;IACrC,WAAW,kBAAC,GAAD,CAAmB,CAAA;cAC/B;GAEO,CAAA,CAEL;;EACP,kBAAC,GAAD;GAAkC;GAAS,SAAS;EAAqB,CAAA;EACzE,kBAAC,GAAD;GACE,OACE,kBAAC,GAAD;IAAO,KAAK;IAAG,IAAI,EAAE,IAAI,EAAE;cACxB,EAAM,KAAI,MACT,kBAAC,GAAD,EAEc,cACb,GAFM,EAAW,MAAM,MAEvB,CACF;GACI,CAAA;GAEE;GACX,SAAS,CAAC,KAAa,EAAM,WAAW;GAC3B;GACb,8BAA8B,KAAK,EAAc;GAC7B;EACrB,CAAA;CACI,EAAA,CAAA;AAEX;AASA,SAAwB,EAAkB,GAA+B;CACvE,OAAO,kBAAC,GAAD,EAAyB,GAAI,EAAQ,CAAA;AAC9C"}
|
|
@@ -11,7 +11,7 @@ import { Alert as c, Box as l, IconButton as u, Stack as d, Typography as f } fr
|
|
|
11
11
|
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
12
12
|
import { TYPE_FILTER as h } from "@sage-bionetworks/synapse-types";
|
|
13
13
|
import { instanceOfGridExecutionDetails as g } from "@sage-bionetworks/synapse-client";
|
|
14
|
-
import
|
|
14
|
+
import _ from "@mui/icons-material/EditTwoTone";
|
|
15
15
|
//#region src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx
|
|
16
16
|
function v(v) {
|
|
17
17
|
let { taskBundle: y, canEdit: b } = v, x = y.task, { assigneePrincipalId: S } = x, [C, w] = s(!1), [T, E] = s(S ?? null), [D, O] = s(!1), { mutateAsync: k, isPending: A } = i({ onError: (t) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataTasksTableAssigneeCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport { displayToast } from '@/index'\nimport { useUpdateCurationTask } from '@/synapse-queries/curation/task/useCurationTask'\nimport
|
|
1
|
+
{"version":3,"file":"MetadataTasksTableAssigneeCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport { displayToast } from '@/index'\nimport { useUpdateCurationTask } from '@/synapse-queries/curation/task/useCurationTask'\nimport EditTwoTone from '@mui/icons-material/EditTwoTone'\nimport { Alert, Box, IconButton, Stack, Typography } from '@mui/material'\nimport {\n instanceOfGridExecutionDetails,\n TaskBundle,\n} from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport taskHasAssignee from '../utils/taskHasAssignee'\n\nexport type MetadataTasksTableAssigneeCellProps = {\n taskBundle: TaskBundle\n canEdit: boolean\n}\n\nexport default function MetadataTasksTableAssigneeCell(\n props: MetadataTasksTableAssigneeCellProps,\n) {\n const { taskBundle, canEdit } = props\n const curationTask = taskBundle.task!\n const { assigneePrincipalId } = curationTask\n const [showUserPicker, setShowUserPicker] = useState(false)\n const [selectedPrincipalId, setSelectedPrincipalId] = useState<string | null>(\n assigneePrincipalId ?? null,\n )\n const [isHoveringOnCell, setIsHoveringOnCell] = useState(false)\n\n const { mutateAsync: updateCurationTask, isPending: updateTaskIsPending } =\n useUpdateCurationTask({\n onError: error => {\n displayToast('Error updating task assignee: ' + error.message, 'danger')\n },\n })\n\n let assigneeDisplay = (\n <Box\n component=\"span\"\n sx={{ flexGrow: 1, fontStyle: 'italic', color: 'grey.700' }}\n >\n Unassigned\n </Box>\n )\n\n const hasAssignee = taskHasAssignee(curationTask)\n if (hasAssignee) {\n assigneeDisplay = <UserOrTeamBadge principalId={assigneePrincipalId} />\n }\n\n const onConfirmUpdateAssignee = useCallback(\n async (assigneeId: string | undefined) => {\n await updateCurationTask({\n ...curationTask,\n assigneePrincipalId: assigneeId,\n })\n setShowUserPicker(false)\n },\n [curationTask, updateCurationTask],\n )\n\n const editDialog = (\n <ConfirmationDialog\n title=\"Set Assignee\"\n open={showUserPicker}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\" gutterBottom>\n Use the Assignee field to organize work by assigning a task to a\n specific person or team. This field is only for task organization\n and filtering. It does not control project access or permission\n levels.\n </Typography>\n <UserSearchBox\n key={showUserPicker.toString()}\n defaultValue={assigneePrincipalId}\n onChange={principalId => setSelectedPrincipalId(principalId)}\n typeFilter={TYPE_FILTER.ALL}\n />\n {taskBundle.status?.executionDetails &&\n instanceOfGridExecutionDetails(\n taskBundle.status?.executionDetails,\n ) &&\n taskBundle.status?.executionDetails?.activeSessionId && (\n <Alert severity=\"warning\">\n This task has an active Curator session. If you change the\n assignee, these effects could happen:\n <ul>\n <li>\n Current assignee(s) may lose access to the session, unsaved\n changes will be lost, and they may not be able to complete\n their work.\n </li>\n <li>\n New assignee(s) may not have permission to access the\n current session\n </li>\n </ul>\n To avoid these issues, a data manager should create a new task.\n </Alert>\n )}\n </Stack>\n }\n confirmButtonProps={{\n children: 'Save',\n loading: updateTaskIsPending,\n }}\n onConfirm={() => {\n onConfirmUpdateAssignee(selectedPrincipalId ?? undefined)\n }}\n onCancel={() => setShowUserPicker(false)}\n />\n )\n\n const editButton = (\n <div>\n <IconButton\n aria-label=\"Edit assignee\"\n size=\"small\"\n onClick={() => setShowUserPicker(true)}\n >\n <EditTwoTone fontSize=\"inherit\" />\n </IconButton>\n </div>\n )\n\n return (\n <Stack\n direction={'row'}\n alignItems={'center'}\n justifyContent={'space-between'}\n spacing={1}\n onMouseOver={() => {\n setIsHoveringOnCell(true)\n }}\n onMouseLeave={() => {\n setIsHoveringOnCell(false)\n }}\n >\n <span style={{ overflow: 'hidden' }}>{assigneeDisplay}</span>\n {isHoveringOnCell && canEdit && editButton}\n {editDialog}\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,eAAY,eAAY,GAC1B,IAAe,EAAW,MAC1B,EAAE,2BAAwB,GAC1B,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,CAAC,GAAqB,KAA0B,EACpD,KAAuB,IACzB,GACM,CAAC,GAAkB,KAAuB,EAAS,EAAK,GAExD,EAAE,aAAa,GAAoB,WAAW,MAClD,EAAsB,EACpB,UAAS,MAAS;EAChB,EAAa,mCAAmC,EAAM,SAAS,QAAQ;CACzE,EACF,CAAC,GAEC,IACF,kBAAC,GAAD;EACE,WAAU;EACV,IAAI;GAAE,UAAU;GAAG,WAAW;GAAU,OAAO;EAAW;YAC3D;CAEI,CAAA;CAIP,AADoB,EAAgB,CAChC,MACF,IAAkB,kBAAC,GAAD,EAAiB,aAAa,EAAsB,CAAA;CAGxE,IAAM,IAA0B,EAC9B,OAAO,MAAmC;EAKxC,AAJA,MAAM,EAAmB;GACvB,GAAG;GACH,qBAAqB;EACvB,CAAC,GACD,EAAkB,EAAK;CACzB,GACA,CAAC,GAAc,CAAkB,CACnC,GAEM,IACJ,kBAAC,GAAD;EACE,OAAM;EACN,MAAM;EACN,SACE,kBAAC,GAAD;GAAO,KAAK;aAAZ;IACE,kBAAC,GAAD;KAAY,SAAQ;KAAQ,cAAA;eAAa;IAK7B,CAAA;IACZ,kBAAC,GAAD;KAEE,cAAc;KACd,WAAU,MAAe,EAAuB,CAAW;KAC3D,YAAY,EAAY;IACzB,GAJM,EAAe,SAAS,CAI9B;IACA,EAAW,QAAQ,oBAClB,EACE,EAAW,QAAQ,gBACrB,KACA,EAAW,QAAQ,kBAAkB,mBACnC,kBAAC,GAAD;KAAO,UAAS;eAAhB;MAA0B;MAGxB,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UAAI,qIAIA,CAAA,GACJ,kBAAC,MAAD,EAAA,UAAI,wEAGA,CAAA,CACF,EAAA,CAAA;MAAC;KAEA;;GAEN;;EAET,oBAAoB;GAClB,UAAU;GACV,SAAS;EACX;EACA,iBAAiB;GACf,EAAwB,KAAuB,KAAA,CAAS;EAC1D;EACA,gBAAgB,EAAkB,EAAK;CACxC,CAAA;CAeH,OACE,kBAAC,GAAD;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,SAAS;EACT,mBAAmB;GACjB,EAAoB,EAAI;EAC1B;EACA,oBAAoB;GAClB,EAAoB,EAAK;EAC3B;YAVF;GAYE,kBAAC,QAAD;IAAM,OAAO,EAAE,UAAU,SAAS;cAAI;GAAsB,CAAA;GAC3D,KAAoB,KAzBvB,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;IACE,cAAW;IACX,MAAK;IACL,eAAe,EAAkB,EAAI;cAErC,kBAAC,GAAD,EAAa,UAAS,UAAW,CAAA;GACvB,CAAA,EACT,CAiB6B;GAC/B;EACI;;AAEX"}
|
|
@@ -16,8 +16,8 @@ import { buildCurateTaskPayload as y } from "./utils/buildCurateTaskPayload.js";
|
|
|
16
16
|
import { Alert as b, Box as x, InputLabel as S, MenuItem as C, Select as w, Stack as T, Tooltip as E, Typography as D } from "@mui/material";
|
|
17
17
|
import { jsx as O, jsxs as k } from "react/jsx-runtime";
|
|
18
18
|
import { FileBasedMetadataTaskPropertiesConcreteTypeEnum as A } from "@sage-bionetworks/synapse-client";
|
|
19
|
-
import
|
|
20
|
-
import M from "
|
|
19
|
+
import j from "lodash-es/noop";
|
|
20
|
+
import M from "@mui/icons-material/HelpTwoTone";
|
|
21
21
|
//#region src/features/entity/metadata-task/create-task/CurateTaskForm.tsx
|
|
22
22
|
function N(N) {
|
|
23
23
|
let { projectId: P, task: F, onCreated: I, onSaved: L, onDeleted: R, onBack: z, onCancel: B, onExit: V, pageTitle: H, pageDescription: U } = N, W = p({
|
|
@@ -131,7 +131,7 @@ function N(N) {
|
|
|
131
131
|
children: n[e].label
|
|
132
132
|
}), /* @__PURE__ */ O(E, {
|
|
133
133
|
title: n[e].tooltip,
|
|
134
|
-
children: /* @__PURE__ */ O(
|
|
134
|
+
children: /* @__PURE__ */ O(M, { sx: { color: "grey.700" } })
|
|
135
135
|
})]
|
|
136
136
|
})
|
|
137
137
|
}, e))
|
|
@@ -152,7 +152,7 @@ function N(N) {
|
|
|
152
152
|
isEditMode: G,
|
|
153
153
|
isPending: W.isPending,
|
|
154
154
|
isValid: q,
|
|
155
|
-
onSubmit: () => void J().catch(
|
|
155
|
+
onSubmit: () => void J().catch(j),
|
|
156
156
|
onBack: z,
|
|
157
157
|
onCancel: B,
|
|
158
158
|
canDelete: W.canDelete,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurateTaskForm.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/CurateTaskForm.tsx"],"sourcesContent":["import FieldDescription from '@/components/FieldDescription'\nimport { StyledFormControl } from '@/components/styled'\nimport { HelpTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n InputLabel,\n MenuItem,\n Select,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n CurationTask,\n FileBasedMetadataTaskPropertiesConcreteTypeEnum,\n} from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport {\n AUTH_MODE_CHANGED_WARNING,\n AUTH_MODE_CONFIG,\n AUTH_MODE_INPUT_DESCRIPTION,\n AUTH_MODE_INPUT_LABEL,\n AUTH_MODE_OPTIONS,\n CURATE_TASK_DISABLED_STATUS_STATES,\n CURATE_TASK_TYPE_CONFIG,\n CURATE_TASK_TYPE_INPUT_LABEL,\n CURATE_TASK_TYPE_OPTIONS,\n GENERIC_SAVE_ERROR_MESSAGE,\n} from '../utils/constants'\nimport CommonTaskFields from './CommonTaskFields'\nimport FileBasedFields from './FileBasedFields'\nimport ProjectSelectorField from './ProjectSelectorField'\nimport RecordBasedFields from './RecordBasedFields'\nimport TaskFormActions from './TaskFormActions'\nimport TaskFormHeader from './TaskFormHeader'\nimport TaskStatusField from './TaskStatusField'\nimport { useCurateTypeFields } from './useCurateTypeFields'\nimport { useCurationTaskFormState } from './useCurationTaskFormState'\nimport {\n AuthorizationModeOption,\n buildCurateTaskPayload,\n} from './utils/buildCurateTaskPayload'\n\nexport type CurateTaskFormProps = {\n /**\n * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).\n * Absent when creating from a context without one (e.g. the Curator Dashboard), in which case the user\n * is prompted to choose a project. Ignored in edit mode -- the project is always derived from `task`.\n */\n projectId?: string\n /** The task being edited. Undefined when creating a new task. */\n task?: CurationTask\n /** Called after a new task is successfully created. */\n onCreated?: (task: CurationTask) => void\n /** Called after an existing task is successfully saved. */\n onSaved?: (task: CurationTask) => void\n /** Called after the task is successfully deleted (edit mode only). */\n onDeleted?: () => void\n /** Shows a \"Back\" button (create mode) that returns to the category picker. */\n onBack?: () => void\n /** Shows a \"Cancel\" button (edit mode) that exits the page without saving. */\n onCancel?: () => void\n /**\n * Shows a \"Back to All Tasks\" button in the top-left of the page, which exits the entire\n * create/edit flow back to the task list (as opposed to `onBack`/`onCancel`, which only move\n * between steps within the flow).\n */\n onExit?: () => void\n /**\n * When present, rendered as a centered page title above the form (e.g. \"Create New Curate Task\" or\n * \"Edit Task\"). The host page is responsible for supplying this rather than rendering its own\n * heading, so the title and the single-column form below it share one centered layout.\n */\n pageTitle?: string\n /** When present, rendered as a centered subtitle below `pageTitle`. */\n pageDescription?: string\n}\n\n/**\n * The create/edit form for a Curate Data curation task (File-Based / Records-Based). Used as the\n * `curate` step of the create wizard (`getCurationTaskFlowRoutes`) and directly by `EditCurationTaskPage`.\n */\nexport default function CurateTaskForm(props: CurateTaskFormProps) {\n const {\n projectId,\n task,\n onCreated,\n onSaved,\n onDeleted,\n onBack,\n onCancel,\n onExit,\n pageTitle,\n pageDescription,\n } = props\n\n const form = useCurationTaskFormState({ projectId, task, onDeleted })\n const { isEditMode } = form\n\n const typeFields = useCurateTypeFields({\n taskProperties: task?.taskProperties,\n isEditMode,\n })\n\n const isValid =\n form.isCommonFieldsValid && form.isProjectValid && typeFields.isValid\n\n async function handleSubmit() {\n const payload = buildCurateTaskPayload({\n existingTask: isEditMode ? task : undefined,\n projectId: form.effectiveProjectId,\n dataType: form.dataType,\n instructions: form.instructions,\n assigneePrincipalId: form.assigneePrincipalId,\n curateTypeFields: {\n ...typeFields.state,\n authorizationMode: typeFields.authorizationMode,\n },\n })\n\n const result = await form.submitTaskAndStatus(payload)\n if (isEditMode) {\n onSaved?.(result)\n } else {\n onCreated?.(result)\n }\n }\n\n return (\n <Stack gap={3}>\n <TaskFormHeader\n onExit={onExit}\n pageTitle={pageTitle}\n pageDescription={pageDescription}\n />\n\n <Stack gap={3} sx={{ width: '100%', maxWidth: 700, mx: 'auto' }}>\n <StyledFormControl fullWidth>\n <InputLabel id=\"curate-task-type-label\">\n {CURATE_TASK_TYPE_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"curate-task-type-label\"\n label={CURATE_TASK_TYPE_INPUT_LABEL}\n value={typeFields.state.concreteType}\n disabled={isEditMode}\n onChange={e => typeFields.setConcreteType(e.target.value)}\n >\n {CURATE_TASK_TYPE_OPTIONS.map(concreteType => (\n <MenuItem key={concreteType} value={concreteType}>\n {CURATE_TASK_TYPE_CONFIG[concreteType].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n\n {form.showProjectSelector && (\n <ProjectSelectorField\n value={form.selectedProjectId}\n onChange={form.setSelectedProjectId}\n />\n )}\n\n <CommonTaskFields\n dataType={form.dataType}\n onDataTypeChange={form.setDataType}\n dueDate={form.displayedDueDate}\n onDueDateChange={form.setPendingDueDate}\n instructions={form.instructions}\n onInstructionsChange={form.setInstructions}\n assigneePrincipalId={form.assigneePrincipalId}\n onAssigneePrincipalIdChange={form.setAssigneePrincipalId}\n />\n\n {isEditMode && (\n <TaskStatusField\n labelId=\"curate-task-status-label\"\n value={form.displayedStatusState}\n onChange={form.setPendingStatusState}\n disabled={form.isStatusFetching || form.currentTaskStatus == null}\n disabledStates={CURATE_TASK_DISABLED_STATUS_STATES}\n />\n )}\n\n {typeFields.state.concreteType ===\n FileBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties ? (\n <FileBasedFields\n value={typeFields.state.value}\n onChange={typeFields.setValue}\n disabled={isEditMode}\n />\n ) : (\n <RecordBasedFields\n value={typeFields.state.value}\n onChange={typeFields.setValue}\n disabled={isEditMode}\n />\n )}\n\n <StyledFormControl fullWidth>\n <InputLabel id=\"curate-task-auth-mode-label\">\n {AUTH_MODE_INPUT_LABEL}\n </InputLabel>\n <FieldDescription>{AUTH_MODE_INPUT_DESCRIPTION}</FieldDescription>\n <Select\n labelId=\"curate-task-auth-mode-label\"\n label={AUTH_MODE_INPUT_LABEL}\n value={typeFields.authorizationMode}\n onChange={e =>\n typeFields.setAuthorizationMode(\n e.target.value as AuthorizationModeOption,\n )\n }\n >\n {AUTH_MODE_OPTIONS.map(mode => (\n <MenuItem key={mode} value={mode}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_CONFIG[mode].label}\n </Typography>\n <Tooltip title={AUTH_MODE_CONFIG[mode].tooltip}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n\n {typeFields.authModeChanged && (\n <Alert severity=\"warning\">{AUTH_MODE_CHANGED_WARNING}</Alert>\n )}\n {form.error && (\n <Alert severity=\"error\">\n {form.error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n\n <TaskFormActions\n isEditMode={isEditMode}\n isPending={form.isPending}\n isValid={isValid}\n onSubmit={() => void handleSubmit().catch(noop)}\n onBack={onBack}\n onCancel={onCancel}\n canDelete={form.canDelete}\n showDeleteConfirmation={form.showDeleteConfirmation}\n onRequestDelete={() => form.setShowDeleteConfirmation(true)}\n onConfirmDelete={() => {\n if (task?.taskId != null) form.deleteTask(task.taskId)\n }}\n onCancelDelete={() => form.setShowDeleteConfirmation(false)}\n isDeletePending={form.isDeletePending}\n />\n </Stack>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CurateTaskForm.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/CurateTaskForm.tsx"],"sourcesContent":["import FieldDescription from '@/components/FieldDescription'\nimport { StyledFormControl } from '@/components/styled'\nimport HelpTwoTone from '@mui/icons-material/HelpTwoTone'\nimport {\n Alert,\n Box,\n InputLabel,\n MenuItem,\n Select,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n CurationTask,\n FileBasedMetadataTaskPropertiesConcreteTypeEnum,\n} from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport {\n AUTH_MODE_CHANGED_WARNING,\n AUTH_MODE_CONFIG,\n AUTH_MODE_INPUT_DESCRIPTION,\n AUTH_MODE_INPUT_LABEL,\n AUTH_MODE_OPTIONS,\n CURATE_TASK_DISABLED_STATUS_STATES,\n CURATE_TASK_TYPE_CONFIG,\n CURATE_TASK_TYPE_INPUT_LABEL,\n CURATE_TASK_TYPE_OPTIONS,\n GENERIC_SAVE_ERROR_MESSAGE,\n} from '../utils/constants'\nimport CommonTaskFields from './CommonTaskFields'\nimport FileBasedFields from './FileBasedFields'\nimport ProjectSelectorField from './ProjectSelectorField'\nimport RecordBasedFields from './RecordBasedFields'\nimport TaskFormActions from './TaskFormActions'\nimport TaskFormHeader from './TaskFormHeader'\nimport TaskStatusField from './TaskStatusField'\nimport { useCurateTypeFields } from './useCurateTypeFields'\nimport { useCurationTaskFormState } from './useCurationTaskFormState'\nimport {\n AuthorizationModeOption,\n buildCurateTaskPayload,\n} from './utils/buildCurateTaskPayload'\n\nexport type CurateTaskFormProps = {\n /**\n * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).\n * Absent when creating from a context without one (e.g. the Curator Dashboard), in which case the user\n * is prompted to choose a project. Ignored in edit mode -- the project is always derived from `task`.\n */\n projectId?: string\n /** The task being edited. Undefined when creating a new task. */\n task?: CurationTask\n /** Called after a new task is successfully created. */\n onCreated?: (task: CurationTask) => void\n /** Called after an existing task is successfully saved. */\n onSaved?: (task: CurationTask) => void\n /** Called after the task is successfully deleted (edit mode only). */\n onDeleted?: () => void\n /** Shows a \"Back\" button (create mode) that returns to the category picker. */\n onBack?: () => void\n /** Shows a \"Cancel\" button (edit mode) that exits the page without saving. */\n onCancel?: () => void\n /**\n * Shows a \"Back to All Tasks\" button in the top-left of the page, which exits the entire\n * create/edit flow back to the task list (as opposed to `onBack`/`onCancel`, which only move\n * between steps within the flow).\n */\n onExit?: () => void\n /**\n * When present, rendered as a centered page title above the form (e.g. \"Create New Curate Task\" or\n * \"Edit Task\"). The host page is responsible for supplying this rather than rendering its own\n * heading, so the title and the single-column form below it share one centered layout.\n */\n pageTitle?: string\n /** When present, rendered as a centered subtitle below `pageTitle`. */\n pageDescription?: string\n}\n\n/**\n * The create/edit form for a Curate Data curation task (File-Based / Records-Based). Used as the\n * `curate` step of the create wizard (`getCurationTaskFlowRoutes`) and directly by `EditCurationTaskPage`.\n */\nexport default function CurateTaskForm(props: CurateTaskFormProps) {\n const {\n projectId,\n task,\n onCreated,\n onSaved,\n onDeleted,\n onBack,\n onCancel,\n onExit,\n pageTitle,\n pageDescription,\n } = props\n\n const form = useCurationTaskFormState({ projectId, task, onDeleted })\n const { isEditMode } = form\n\n const typeFields = useCurateTypeFields({\n taskProperties: task?.taskProperties,\n isEditMode,\n })\n\n const isValid =\n form.isCommonFieldsValid && form.isProjectValid && typeFields.isValid\n\n async function handleSubmit() {\n const payload = buildCurateTaskPayload({\n existingTask: isEditMode ? task : undefined,\n projectId: form.effectiveProjectId,\n dataType: form.dataType,\n instructions: form.instructions,\n assigneePrincipalId: form.assigneePrincipalId,\n curateTypeFields: {\n ...typeFields.state,\n authorizationMode: typeFields.authorizationMode,\n },\n })\n\n const result = await form.submitTaskAndStatus(payload)\n if (isEditMode) {\n onSaved?.(result)\n } else {\n onCreated?.(result)\n }\n }\n\n return (\n <Stack gap={3}>\n <TaskFormHeader\n onExit={onExit}\n pageTitle={pageTitle}\n pageDescription={pageDescription}\n />\n\n <Stack gap={3} sx={{ width: '100%', maxWidth: 700, mx: 'auto' }}>\n <StyledFormControl fullWidth>\n <InputLabel id=\"curate-task-type-label\">\n {CURATE_TASK_TYPE_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"curate-task-type-label\"\n label={CURATE_TASK_TYPE_INPUT_LABEL}\n value={typeFields.state.concreteType}\n disabled={isEditMode}\n onChange={e => typeFields.setConcreteType(e.target.value)}\n >\n {CURATE_TASK_TYPE_OPTIONS.map(concreteType => (\n <MenuItem key={concreteType} value={concreteType}>\n {CURATE_TASK_TYPE_CONFIG[concreteType].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n\n {form.showProjectSelector && (\n <ProjectSelectorField\n value={form.selectedProjectId}\n onChange={form.setSelectedProjectId}\n />\n )}\n\n <CommonTaskFields\n dataType={form.dataType}\n onDataTypeChange={form.setDataType}\n dueDate={form.displayedDueDate}\n onDueDateChange={form.setPendingDueDate}\n instructions={form.instructions}\n onInstructionsChange={form.setInstructions}\n assigneePrincipalId={form.assigneePrincipalId}\n onAssigneePrincipalIdChange={form.setAssigneePrincipalId}\n />\n\n {isEditMode && (\n <TaskStatusField\n labelId=\"curate-task-status-label\"\n value={form.displayedStatusState}\n onChange={form.setPendingStatusState}\n disabled={form.isStatusFetching || form.currentTaskStatus == null}\n disabledStates={CURATE_TASK_DISABLED_STATUS_STATES}\n />\n )}\n\n {typeFields.state.concreteType ===\n FileBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties ? (\n <FileBasedFields\n value={typeFields.state.value}\n onChange={typeFields.setValue}\n disabled={isEditMode}\n />\n ) : (\n <RecordBasedFields\n value={typeFields.state.value}\n onChange={typeFields.setValue}\n disabled={isEditMode}\n />\n )}\n\n <StyledFormControl fullWidth>\n <InputLabel id=\"curate-task-auth-mode-label\">\n {AUTH_MODE_INPUT_LABEL}\n </InputLabel>\n <FieldDescription>{AUTH_MODE_INPUT_DESCRIPTION}</FieldDescription>\n <Select\n labelId=\"curate-task-auth-mode-label\"\n label={AUTH_MODE_INPUT_LABEL}\n value={typeFields.authorizationMode}\n onChange={e =>\n typeFields.setAuthorizationMode(\n e.target.value as AuthorizationModeOption,\n )\n }\n >\n {AUTH_MODE_OPTIONS.map(mode => (\n <MenuItem key={mode} value={mode}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_CONFIG[mode].label}\n </Typography>\n <Tooltip title={AUTH_MODE_CONFIG[mode].tooltip}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n\n {typeFields.authModeChanged && (\n <Alert severity=\"warning\">{AUTH_MODE_CHANGED_WARNING}</Alert>\n )}\n {form.error && (\n <Alert severity=\"error\">\n {form.error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n\n <TaskFormActions\n isEditMode={isEditMode}\n isPending={form.isPending}\n isValid={isValid}\n onSubmit={() => void handleSubmit().catch(noop)}\n onBack={onBack}\n onCancel={onCancel}\n canDelete={form.canDelete}\n showDeleteConfirmation={form.showDeleteConfirmation}\n onRequestDelete={() => form.setShowDeleteConfirmation(true)}\n onConfirmDelete={() => {\n if (task?.taskId != null) form.deleteTask(task.taskId)\n }}\n onCancelDelete={() => form.setShowDeleteConfirmation(false)}\n isDeletePending={form.isDeletePending}\n />\n </Stack>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Card as e, CardActionArea as t, Stack as n, Typography as r } from "@mui/material";
|
|
2
2
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import o from "@mui/icons-material/InsertPhotoOutlined";
|
|
4
4
|
//#region src/features/entity/metadata-task/create-task/TaskCategoryCard.tsx
|
|
5
5
|
var s = 260, c = 160;
|
|
6
6
|
function l(l) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCategoryCard.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/TaskCategoryCard.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"TaskCategoryCard.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/TaskCategoryCard.tsx"],"sourcesContent":["import InsertPhotoOutlined from '@mui/icons-material/InsertPhotoOutlined'\nimport { Card, CardActionArea, Stack, Typography } from '@mui/material'\nimport { ComponentType, ReactNode, SVGProps } from 'react'\n\nexport type TaskCategoryCardProps = {\n title: string\n /** Illustration for the card art, imported as a React component via SVGR. */\n Illustration?: ComponentType<SVGProps<SVGSVGElement>>\n disabled?: boolean\n /** e.g. a \"Coming soon\" chip for a category that isn't implemented yet. */\n badge?: ReactNode\n onClick?: () => void\n}\n\nconst CARD_WIDTH = 260\nconst ILLUSTRATION_HEIGHT = 160\n\n/**\n * A single category tile in the \"Select Category for New Task\" grid (see `CreateTaskCategoryPicker`).\n * Mirrors the card layout from Figma (Curator BDF-LINC file, node 12373:22776): a light illustration\n * area above a dark, centered title footer.\n */\nexport default function TaskCategoryCard(props: TaskCategoryCardProps) {\n const { title, Illustration, disabled = false, badge, onClick } = props\n\n return (\n <Card\n variant=\"outlined\"\n sx={{\n width: { xs: '100%', sm: CARD_WIDTH },\n borderRadius: '5px',\n opacity: disabled ? 0.6 : 1,\n }}\n >\n <CardActionArea\n disabled={disabled}\n onClick={onClick}\n aria-label={title}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n }}\n >\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n sx={{\n width: '100%',\n height: ILLUSTRATION_HEIGHT,\n bgcolor: 'grey.200',\n }}\n >\n {Illustration ? (\n <Illustration\n style={{ maxHeight: '80%', maxWidth: '80%' }}\n aria-hidden\n />\n ) : (\n <InsertPhotoOutlined sx={{ fontSize: 48, color: 'grey.400' }} />\n )}\n </Stack>\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={1}\n sx={{ width: '100%', bgcolor: 'primary.700', py: 2.5, px: 2 }}\n >\n <Typography\n variant=\"headline3\"\n sx={{ color: 'common.white', textAlign: 'center' }}\n >\n {title}\n </Typography>\n {badge}\n </Stack>\n </CardActionArea>\n </Card>\n )\n}\n"],"mappings":";;;;AAcA,IAAM,IAAa,KACb,IAAsB;AAO5B,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,UAAO,iBAAc,cAAW,IAAO,UAAO,eAAY;CAElE,OACE,kBAAC,GAAD;EACE,SAAQ;EACR,IAAI;GACF,OAAO;IAAE,IAAI;IAAQ,IAAI;GAAW;GACpC,cAAc;GACd,SAAS,IAAW,KAAM;EAC5B;YAEA,kBAAC,GAAD;GACY;GACD;GACT,cAAY;GACZ,IAAI;IACF,SAAS;IACT,eAAe;IACf,YAAY;GACd;aARF,CAUE,kBAAC,GAAD;IACE,YAAW;IACX,gBAAe;IACf,IAAI;KACF,OAAO;KACP,QAAQ;KACR,SAAS;IACX;cAEC,IACC,kBAAC,GAAD;KACE,OAAO;MAAE,WAAW;MAAO,UAAU;KAAM;KAC3C,eAAA;IACD,CAAA,IAED,kBAAC,GAAD,EAAqB,IAAI;KAAE,UAAU;KAAI,OAAO;IAAW,EAAI,CAAA;GAE5D,CAAA,GACP,kBAAC,GAAD;IACE,YAAW;IACX,gBAAe;IACf,KAAK;IACL,IAAI;KAAE,OAAO;KAAQ,SAAS;KAAe,IAAI;KAAK,IAAI;IAAE;cAJ9D,CAME,kBAAC,GAAD;KACE,SAAQ;KACR,IAAI;MAAE,OAAO;MAAgB,WAAW;KAAS;eAEhD;IACS,CAAA,GACX,CACI;KACO;;CACZ,CAAA;AAEV"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../utils/constants.js";
|
|
2
2
|
import { Button as e, Stack as t, Typography as n } from "@mui/material";
|
|
3
3
|
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
4
|
-
import
|
|
4
|
+
import o from "@mui/icons-material/ArrowBack";
|
|
5
5
|
//#region src/features/entity/metadata-task/create-task/TaskFormHeader.tsx
|
|
6
6
|
function s(s) {
|
|
7
7
|
let { onExit: c, pageTitle: l, pageDescription: u } = s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskFormHeader.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/TaskFormHeader.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"TaskFormHeader.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/TaskFormHeader.tsx"],"sourcesContent":["import ArrowBack from '@mui/icons-material/ArrowBack'\nimport { Button, Stack, Typography } from '@mui/material'\nimport { BACK_TO_ALL_TASKS_LABEL } from '../utils/constants'\n\nexport type TaskFormHeaderProps = {\n /**\n * Shows a \"Back to All Tasks\" button in the top-left, which exits the entire create/edit flow\n * back to the task list.\n */\n onExit?: () => void\n /** When present, rendered as a centered page title above the form. */\n pageTitle?: string\n /** When present, rendered as a centered subtitle below `pageTitle`. */\n pageDescription?: string\n}\n\n/**\n * The optional top-left \"Back to All Tasks\" button and the centered page title/description block\n * shared by every curation-task create/edit form.\n */\nexport default function TaskFormHeader(props: TaskFormHeaderProps) {\n const { onExit, pageTitle, pageDescription } = props\n return (\n <>\n {onExit && (\n <Button\n variant=\"text\"\n startIcon={<ArrowBack />}\n onClick={onExit}\n sx={{ alignSelf: 'flex-start' }}\n >\n {BACK_TO_ALL_TASKS_LABEL}\n </Button>\n )}\n\n {pageTitle && (\n <Stack gap={1} alignItems=\"center\" sx={{ textAlign: 'center' }}>\n <Typography variant=\"headline1\" component=\"h1\">\n {pageTitle}\n </Typography>\n {pageDescription && (\n <Typography\n variant=\"headline3\"\n component=\"p\"\n color=\"text.secondary\"\n >\n {pageDescription}\n </Typography>\n )}\n </Stack>\n )}\n </>\n )\n}\n"],"mappings":";;;;;AAoBA,SAAwB,EAAe,GAA4B;CACjE,IAAM,EAAE,WAAQ,cAAW,uBAAoB;CAC/C,OACE,kBAAA,GAAA,EAAA,UAAA,CACG,KACC,kBAAC,GAAD;EACE,SAAQ;EACR,WAAW,kBAAC,GAAD,CAAY,CAAA;EACvB,SAAS;EACT,IAAI,EAAE,WAAW,aAAa;;CAGxB,CAAA,GAGT,KACC,kBAAC,GAAD;EAAO,KAAK;EAAG,YAAW;EAAS,IAAI,EAAE,WAAW,SAAS;YAA7D,CACE,kBAAC,GAAD;GAAY,SAAQ;GAAY,WAAU;aACvC;EACS,CAAA,GACX,KACC,kBAAC,GAAD;GACE,SAAQ;GACR,WAAU;GACV,OAAM;aAEL;EACS,CAAA,CAET;GAET,EAAA,CAAA;AAEN"}
|
|
@@ -5,32 +5,32 @@ import o from "./CreateTaskConfirmation.js";
|
|
|
5
5
|
import s from "./CurateTaskForm.js";
|
|
6
6
|
import { Button as c } from "@mui/material";
|
|
7
7
|
import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
8
|
+
import { Navigate as f, Outlet as p, useNavigate as m, useParams as h } from "react-router";
|
|
9
|
+
import g from "@mui/icons-material/ArrowBack";
|
|
10
10
|
//#region src/features/entity/metadata-task/create-task/curationTaskFlowRoutes.tsx
|
|
11
11
|
function _(e) {
|
|
12
12
|
let { onExit: t } = e;
|
|
13
13
|
return /* @__PURE__ */ d(l, { children: [t && /* @__PURE__ */ u(c, {
|
|
14
14
|
variant: "text",
|
|
15
|
-
startIcon: /* @__PURE__ */ u(
|
|
15
|
+
startIcon: /* @__PURE__ */ u(g, {}),
|
|
16
16
|
onClick: t,
|
|
17
17
|
sx: { alignSelf: "flex-start" },
|
|
18
18
|
children: "Back to All Tasks"
|
|
19
|
-
}), /* @__PURE__ */ u(
|
|
19
|
+
}), /* @__PURE__ */ u(p, {})] });
|
|
20
20
|
}
|
|
21
21
|
function v(e) {
|
|
22
|
-
let t =
|
|
22
|
+
let t = m();
|
|
23
23
|
return /* @__PURE__ */ u(_, { onExit: () => void t(e.exitPath) });
|
|
24
24
|
}
|
|
25
25
|
function y() {
|
|
26
|
-
let e =
|
|
26
|
+
let e = m();
|
|
27
27
|
return /* @__PURE__ */ u(a, {
|
|
28
28
|
onSelectCompute: () => void e("compute"),
|
|
29
29
|
onSelectCurate: () => void e("curate")
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
function b(t) {
|
|
33
|
-
let r =
|
|
33
|
+
let r = m();
|
|
34
34
|
return /* @__PURE__ */ u(i, {
|
|
35
35
|
projectId: t.projectId,
|
|
36
36
|
pageTitle: e,
|
|
@@ -41,7 +41,7 @@ function b(t) {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
function x(e) {
|
|
44
|
-
let n =
|
|
44
|
+
let n = m();
|
|
45
45
|
return /* @__PURE__ */ u(s, {
|
|
46
46
|
projectId: e.projectId,
|
|
47
47
|
pageTitle: t,
|
|
@@ -52,11 +52,11 @@ function x(e) {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
function S(e) {
|
|
55
|
-
let { taskId: t } =
|
|
55
|
+
let { taskId: t } = h(), n = m(), r = t ? Number(t) : void 0;
|
|
56
56
|
return r ? /* @__PURE__ */ u(o, {
|
|
57
57
|
taskId: r,
|
|
58
58
|
onDone: () => void n(e.exitPath)
|
|
59
|
-
}) : /* @__PURE__ */ u(
|
|
59
|
+
}) : /* @__PURE__ */ u(f, {
|
|
60
60
|
to: "..",
|
|
61
61
|
replace: !0
|
|
62
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curationTaskFlowRoutes.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/curationTaskFlowRoutes.tsx"],"sourcesContent":["import {\n CREATE_COMPUTE_TASK_PAGE_TITLE,\n CREATE_CURATE_TASK_PAGE_TITLE,\n FILL_IN_COMPUTE_TASK_DETAILS_DESCRIPTION,\n FILL_IN_CURATE_TASK_DETAILS_DESCRIPTION,\n BACK_TO_ALL_TASKS_LABEL,\n} from '../utils/constants'\nimport
|
|
1
|
+
{"version":3,"file":"curationTaskFlowRoutes.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/curationTaskFlowRoutes.tsx"],"sourcesContent":["import {\n CREATE_COMPUTE_TASK_PAGE_TITLE,\n CREATE_CURATE_TASK_PAGE_TITLE,\n FILL_IN_COMPUTE_TASK_DETAILS_DESCRIPTION,\n FILL_IN_CURATE_TASK_DETAILS_DESCRIPTION,\n BACK_TO_ALL_TASKS_LABEL,\n} from '../utils/constants'\nimport ArrowBack from '@mui/icons-material/ArrowBack'\nimport { Button } from '@mui/material'\nimport {\n Navigate,\n Outlet,\n RouteObject,\n useNavigate,\n useParams,\n} from 'react-router'\nimport ComputeTaskForm from './ComputeTaskForm'\nimport CreateTaskCategoryPicker from './CreateTaskCategoryPicker'\nimport CreateTaskConfirmation from './CreateTaskConfirmation'\nimport CurateTaskForm from './CurateTaskForm'\n\nexport type GetCurationTaskFlowRoutesOptions = {\n /**\n * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).\n * Absent when creating from a context without one (e.g. the Curator Dashboard).\n */\n projectId?: string\n /**\n * Path (relative to the host router) to navigate to when the user exits the flow -- via \"Back to\n * All Tasks\" on the category picker/compute/curate forms, or \"Back to All Tasks\" on the\n * confirmation screen. Typically the host's own index route (`'/'`).\n */\n exitPath: string\n}\n\n/**\n * Layout for the steps that share the generic \"Create New Task\" header (the category picker and the\n * confirmation screen). The compute/curate form steps render their own more specific centered\n * title/subtitle instead (via their `pageTitle`/`pageDescription` props below), so they aren't nested\n * under this layout.\n *\n * When `onExit` is provided, a top-left \"Back to All Tasks\" button is shown above the title, matching\n * the one on the form steps.\n */\nfunction CreateTaskLayout(props: { onExit?: () => void }) {\n const { onExit } = props\n return (\n <>\n {onExit && (\n <Button\n variant=\"text\"\n startIcon={<ArrowBack />}\n onClick={onExit}\n sx={{ alignSelf: 'flex-start' }}\n >\n {BACK_TO_ALL_TASKS_LABEL}\n </Button>\n )}\n <Outlet />\n </>\n )\n}\n\nfunction CategoryPickerLayoutRoute(props: { exitPath: string }) {\n const navigate = useNavigate()\n return <CreateTaskLayout onExit={() => void navigate(props.exitPath)} />\n}\n\nfunction CategoryPickerRoute() {\n const navigate = useNavigate()\n return (\n <CreateTaskCategoryPicker\n onSelectCompute={() => void navigate('compute')}\n onSelectCurate={() => void navigate('curate')}\n />\n )\n}\n\nfunction ComputeFormRoute(props: { projectId?: string; exitPath: string }) {\n const navigate = useNavigate()\n return (\n <ComputeTaskForm\n projectId={props.projectId}\n pageTitle={CREATE_COMPUTE_TASK_PAGE_TITLE}\n pageDescription={FILL_IN_COMPUTE_TASK_DETAILS_DESCRIPTION}\n onBack={() => void navigate(-1)}\n onExit={() => void navigate(props.exitPath)}\n onCreated={task => void navigate(`../confirmation/${task.taskId}`)}\n />\n )\n}\n\nfunction CurateFormRoute(props: { projectId?: string; exitPath: string }) {\n const navigate = useNavigate()\n return (\n <CurateTaskForm\n projectId={props.projectId}\n pageTitle={CREATE_CURATE_TASK_PAGE_TITLE}\n pageDescription={FILL_IN_CURATE_TASK_DETAILS_DESCRIPTION}\n onBack={() => void navigate(-1)}\n onExit={() => void navigate(props.exitPath)}\n onCreated={task => void navigate(`../confirmation/${task.taskId}`)}\n />\n )\n}\n\nfunction ConfirmationRoute(props: { exitPath: string }) {\n const { taskId } = useParams<{ taskId: string }>()\n const navigate = useNavigate()\n const parsedTaskId = taskId ? Number(taskId) : undefined\n if (!parsedTaskId) {\n return <Navigate to=\"..\" replace />\n }\n return (\n <CreateTaskConfirmation\n taskId={parsedTaskId}\n onDone={() => void navigate(props.exitPath)}\n />\n )\n}\n\n/**\n * Builds the route objects for the 3-step \"Create New Task\" wizard: category picker -> compute/curate\n * form -> confirmation. The task itself is created on the step-2-to-step-3 transition (see\n * `ComputeTaskForm`/`CurateTaskForm`'s `onCreated`).\n */\nexport function getCurationTaskFlowRoutes(\n options: GetCurationTaskFlowRoutesOptions,\n): RouteObject[] {\n const { projectId, exitPath } = options\n return [\n {\n element: <CategoryPickerLayoutRoute exitPath={exitPath} />,\n children: [{ index: true, element: <CategoryPickerRoute /> }],\n },\n {\n element: <CreateTaskLayout />,\n children: [\n {\n path: 'confirmation/:taskId',\n element: <ConfirmationRoute exitPath={exitPath} />,\n },\n ],\n },\n {\n path: 'compute',\n element: <ComputeFormRoute projectId={projectId} exitPath={exitPath} />,\n },\n {\n path: 'curate',\n element: <CurateFormRoute projectId={projectId} exitPath={exitPath} />,\n },\n ]\n}\n"],"mappings":";;;;;;;;;;AA4CA,SAAS,EAAiB,GAAgC;CACxD,IAAM,EAAE,cAAW;CACnB,OACE,kBAAA,GAAA,EAAA,UAAA,CACG,KACC,kBAAC,GAAD;EACE,SAAQ;EACR,WAAW,kBAAC,GAAD,CAAY,CAAA;EACvB,SAAS;EACT,IAAI,EAAE,WAAW,aAAa;;CAGxB,CAAA,GAEV,kBAAC,GAAD,CAAS,CAAA,CACT,EAAA,CAAA;AAEN;AAEA,SAAS,EAA0B,GAA6B;CAC9D,IAAM,IAAW,EAAY;CAC7B,OAAO,kBAAC,GAAD,EAAkB,cAAc,KAAK,EAAS,EAAM,QAAQ,EAAI,CAAA;AACzE;AAEA,SAAS,IAAsB;CAC7B,IAAM,IAAW,EAAY;CAC7B,OACE,kBAAC,GAAD;EACE,uBAAuB,KAAK,EAAS,SAAS;EAC9C,sBAAsB,KAAK,EAAS,QAAQ;CAC7C,CAAA;AAEL;AAEA,SAAS,EAAiB,GAAiD;CACzE,IAAM,IAAW,EAAY;CAC7B,OACE,kBAAC,GAAD;EACE,WAAW,EAAM;EACjB,WAAW;EACX,iBAAiB;EACjB,cAAc,KAAK,EAAS,EAAE;EAC9B,cAAc,KAAK,EAAS,EAAM,QAAQ;EAC1C,YAAW,MAAQ,KAAK,EAAS,mBAAmB,EAAK,QAAQ;CAClE,CAAA;AAEL;AAEA,SAAS,EAAgB,GAAiD;CACxE,IAAM,IAAW,EAAY;CAC7B,OACE,kBAAC,GAAD;EACE,WAAW,EAAM;EACjB,WAAW;EACX,iBAAiB;EACjB,cAAc,KAAK,EAAS,EAAE;EAC9B,cAAc,KAAK,EAAS,EAAM,QAAQ;EAC1C,YAAW,MAAQ,KAAK,EAAS,mBAAmB,EAAK,QAAQ;CAClE,CAAA;AAEL;AAEA,SAAS,EAAkB,GAA6B;CACtD,IAAM,EAAE,cAAW,EAA8B,GAC3C,IAAW,EAAY,GACvB,IAAe,IAAS,OAAO,CAAM,IAAI,KAAA;CAI/C,OAHK,IAIH,kBAAC,GAAD;EACE,QAAQ;EACR,cAAc,KAAK,EAAS,EAAM,QAAQ;CAC3C,CAAA,IANM,kBAAC,GAAD;EAAU,IAAG;EAAK,SAAA;CAAS,CAAA;AAQtC;AAOA,SAAgB,EACd,GACe;CACf,IAAM,EAAE,cAAW,gBAAa;CAChC,OAAO;EACL;GACE,SAAS,kBAAC,GAAD,EAAqC,YAAW,CAAA;GACzD,UAAU,CAAC;IAAE,OAAO;IAAM,SAAS,kBAAC,GAAD,CAAsB,CAAA;GAAE,CAAC;EAC9D;EACA;GACE,SAAS,kBAAC,GAAD,CAAmB,CAAA;GAC5B,UAAU,CACR;IACE,MAAM;IACN,SAAS,kBAAC,GAAD,EAA6B,YAAW,CAAA;GACnD,CACF;EACF;EACA;GACE,MAAM;GACN,SAAS,kBAAC,GAAD;IAA6B;IAAqB;GAAW,CAAA;EACxE;EACA;GACE,MAAM;GACN,SAAS,kBAAC,GAAD;IAA4B;IAAqB;GAAW,CAAA;EACvE;CACF;AACF"}
|
|
@@ -8,7 +8,7 @@ import u from "./OpenInvitationsToUserCard.module.js";
|
|
|
8
8
|
import { useRef as d } from "react";
|
|
9
9
|
import { Card as f, Collapse as p, Divider as m, Tooltip as h } from "@mui/material";
|
|
10
10
|
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
11
|
-
import
|
|
11
|
+
import y from "@mui/icons-material/ChatTwoTone";
|
|
12
12
|
import b from "@mui/material/Typography";
|
|
13
13
|
import x from "@mui/material/Stack";
|
|
14
14
|
import S from "@mui/material/Button";
|