synapse-react-client 4.0.33 → 4.0.35

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.
Files changed (179) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/assets/icons/curie-head.svg +21 -0
  3. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +29 -3
  4. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  5. package/dist/components/AccessRequirementList/AccessRequirementList.js +153 -84
  6. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js +1 -0
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  9. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts +1 -0
  10. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +49 -42
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts +6 -0
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +161 -155
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts +21 -0
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -0
  19. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +164 -0
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -0
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts +22 -0
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -0
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +264 -0
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -0
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js +1 -0
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +105 -96
  29. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  30. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.d.ts +13 -0
  31. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.d.ts.map +1 -0
  32. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +122 -0
  33. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -0
  34. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +17 -0
  35. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -0
  36. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +112 -0
  37. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -0
  38. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +27 -0
  39. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -0
  40. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +194 -0
  41. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -0
  42. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.d.ts +1 -0
  43. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.d.ts.map +1 -1
  44. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js +7 -7
  45. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  46. package/dist/components/DraggableDialog/DraggableDialog.d.ts +2 -1
  47. package/dist/components/DraggableDialog/DraggableDialog.d.ts.map +1 -1
  48. package/dist/components/DraggableDialog/DraggableDialog.js +42 -33
  49. package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
  50. package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
  51. package/dist/components/EntityTreeTable/hooks/useTableColumns.js +12 -6
  52. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  53. package/dist/components/ExperimentalMode/ExperimentalMode.js +2 -1
  54. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  55. package/dist/components/FilePreview/PdfPreview.d.ts.map +1 -1
  56. package/dist/components/FilePreview/PdfPreview.js +23 -20
  57. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  58. package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
  59. package/dist/components/GenericCard/SynapseCardLabel.js +100 -99
  60. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  61. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  62. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +64 -55
  63. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  64. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
  65. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +4 -1
  66. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  67. package/dist/components/StorybookComponentWrapper.d.ts.map +1 -1
  68. package/dist/components/StorybookComponentWrapper.js +16 -13
  69. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  70. package/dist/components/SynapseChat/GridAgentChat.js +6 -6
  71. package/dist/components/SynapseChat/SynapseChat.d.ts +2 -1
  72. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  73. package/dist/components/SynapseChat/SynapseChat.js +118 -74
  74. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  75. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -1
  76. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  77. package/dist/components/SynapseChat/SynapseChatInteraction.js +21 -21
  78. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  79. package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
  80. package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
  81. package/dist/components/SynapseChat/SynapseChatMessage.js +9 -8
  82. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  83. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
  84. package/dist/components/SynapseChat/SynapsePortalChatDialog.js +2 -1
  85. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  86. package/dist/components/TanStackTable/TanStackTableUtils.d.ts.map +1 -1
  87. package/dist/components/TanStackTable/TanStackTableUtils.js +6 -6
  88. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  89. package/dist/components/dataaccess/AccessRequirementDashboard.d.ts.map +1 -1
  90. package/dist/components/dataaccess/AccessRequirementDashboard.js +55 -55
  91. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  92. package/dist/components/dataaccess/EDucTemplateTable.d.ts +3 -0
  93. package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -0
  94. package/dist/components/dataaccess/EDucTemplateTable.js +213 -0
  95. package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -0
  96. package/dist/components/dataaccess/ReviewerDashboard.d.ts.map +1 -1
  97. package/dist/components/dataaccess/ReviewerDashboard.js +44 -34
  98. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  99. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +12 -0
  100. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -0
  101. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +84 -0
  102. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -0
  103. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.d.ts.map +1 -1
  104. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js +20 -18
  105. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
  106. package/dist/components/entity/page/CreatedByModifiedBy.d.ts.map +1 -1
  107. package/dist/components/entity/page/CreatedByModifiedBy.js +43 -61
  108. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  109. package/dist/components/entity/page/createdByModifiedByTooltips.d.ts +7 -0
  110. package/dist/components/entity/page/createdByModifiedByTooltips.d.ts.map +1 -0
  111. package/dist/components/entity/page/createdByModifiedByTooltips.js +36 -0
  112. package/dist/components/entity/page/createdByModifiedByTooltips.js.map +1 -0
  113. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  114. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +130 -65
  115. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  116. package/dist/components/widgets/Range.js +8 -2
  117. package/dist/components/widgets/Range.js.map +1 -1
  118. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +2 -0
  119. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  120. package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -40
  121. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  122. package/dist/components/widgets/query-filter/RangeFacetFilter.d.ts.map +1 -1
  123. package/dist/components/widgets/query-filter/RangeFacetFilter.js +2 -1
  124. package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  125. package/dist/components/widgets/query-filter/RangeFacetFilterUI.d.ts.map +1 -1
  126. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +19 -19
  127. package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
  128. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  129. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +48 -23
  130. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  131. package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts.map +1 -1
  132. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js +9 -9
  133. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js.map +1 -1
  134. package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
  135. package/dist/mocks/msw/handlers/fileHandlers.js +22 -22
  136. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  137. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  138. package/dist/mocks/msw/handlers/userProfileHandlers.js +36 -36
  139. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  140. package/dist/mocks/user/mock_user_profile.d.ts +1 -0
  141. package/dist/mocks/user/mock_user_profile.d.ts.map +1 -1
  142. package/dist/mocks/user/mock_user_profile.js +45 -45
  143. package/dist/mocks/user/mock_user_profile.js.map +1 -1
  144. package/dist/style/components/facet_nav/_facet-nav-panel.scss +0 -6
  145. package/dist/synapse-queries/KeyFactory.d.ts +1 -0
  146. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  147. package/dist/synapse-queries/KeyFactory.js +3 -0
  148. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  149. package/dist/synapse-queries/dataaccess/index.js +4 -4
  150. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +13 -1
  151. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  152. package/dist/synapse-queries/dataaccess/useEDuc.js +67 -49
  153. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  154. package/dist/synapse-queries/index.js +185 -184
  155. package/dist/tsconfig.build.tsbuildinfo +1 -1
  156. package/dist/utils/APIConstants.d.ts +6 -0
  157. package/dist/utils/APIConstants.d.ts.map +1 -1
  158. package/dist/utils/APIConstants.js +2 -2
  159. package/dist/utils/APIConstants.js.map +1 -1
  160. package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
  161. package/dist/utils/AppUtils/session/ApplicationSessionManager.js +20 -19
  162. package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
  163. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  164. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  165. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  166. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  167. package/dist/utils/functions/RegularExpressions.d.ts +7 -0
  168. package/dist/utils/functions/RegularExpressions.d.ts.map +1 -1
  169. package/dist/utils/functions/RegularExpressions.js +5 -4
  170. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  171. package/dist/utils/hooks/useFetchBlobUrl.d.ts +9 -0
  172. package/dist/utils/hooks/useFetchBlobUrl.d.ts.map +1 -0
  173. package/dist/utils/hooks/useFetchBlobUrl.js +19 -0
  174. package/dist/utils/hooks/useFetchBlobUrl.js.map +1 -0
  175. package/dist/utils/hooks/useIsHydrated.d.ts +9 -0
  176. package/dist/utils/hooks/useIsHydrated.d.ts.map +1 -0
  177. package/dist/utils/hooks/useIsHydrated.js +10 -0
  178. package/dist/utils/hooks/useIsHydrated.js.map +1 -0
  179. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EDucTemplateTable.js","names":[],"sources":["../../../src/components/dataaccess/EDucTemplateTable.tsx"],"sourcesContent":["import {\n useGetEDucTemplateValidation,\n useListEDucTemplates,\n} from '@/synapse-queries'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { CheckCircleTwoTone, ErrorTwoTone, Replay } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n IconButton,\n Skeleton,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport { EDucTemplate } from '@sage-bionetworks/synapse-client'\nimport {\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport { useEffect, useMemo, useState } from 'react'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\n\nconst columnHelper = createColumnHelper<EDucTemplate>()\n\nconst columns = [\n columnHelper.accessor('name', {\n header: props => <ColumnHeader {...props} title={'Name'} />,\n cell: ({ getValue }) => getValue() ?? '',\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('description', {\n header: props => <ColumnHeader {...props} title={'Description'} />,\n cell: ({ getValue }) => getValue() ?? '',\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title={'Created on'} />,\n cell: ({ getValue }) => {\n const value = getValue()\n return value ? formatDate(dayjs(value)) : ''\n },\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.accessor('modifiedOn', {\n header: props => <ColumnHeader {...props} title={'Modified on'} />,\n cell: ({ getValue }) => {\n const value = getValue()\n return value ? formatDate(dayjs(value)) : ''\n },\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.display({\n id: 'validation',\n header: props => <ColumnHeader {...props} title={'Validation status'} />,\n cell: ({ row }) => <ValidationCell templateId={row.original.templateId} />,\n }),\n]\n\nfunction ValidationCell(props: { templateId: string | undefined }) {\n const { templateId } = props\n const [hasRequestedValidation, setHasRequestedValidation] = useState(false)\n\n const { data, error, isFetching, refetch } = useGetEDucTemplateValidation(\n templateId ?? '',\n { enabled: hasRequestedValidation && Boolean(templateId) },\n )\n\n if (!templateId) return null\n\n if (!hasRequestedValidation) {\n return (\n <Button\n variant={'outlined'}\n size={'small'}\n onClick={() => setHasRequestedValidation(true)}\n >\n Validate\n </Button>\n )\n }\n\n if (isFetching) {\n return (\n <Box sx={{ display: 'inline-flex', alignItems: 'center' }}>\n <SynapseSpinner size={16} />\n </Box>\n )\n }\n\n if (error) {\n return (\n <Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.5 }}>\n <ErrorTwoTone color={'error'} fontSize={'small'} />\n <Typography variant={'smallText1'} sx={{ color: 'error.main' }}>\n {error.reason}\n </Typography>\n <Tooltip title={'Re-validate'}>\n <IconButton\n size={'small'}\n onClick={() => {\n refetch()\n }}\n aria-label={'Re-validate'}\n >\n <Replay fontSize={'small'} />\n </IconButton>\n </Tooltip>\n </Box>\n )\n }\n\n if (data?.isValid) {\n return (\n <Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.5 }}>\n <CheckCircleTwoTone color={'success'} fontSize={'small'} />\n <Typography variant={'smallText1'}>Valid</Typography>\n <Tooltip title={'Re-validate'}>\n <IconButton\n size={'small'}\n onClick={() => {\n refetch()\n }}\n aria-label={'Re-validate'}\n >\n <Replay fontSize={'small'} />\n </IconButton>\n </Tooltip>\n </Box>\n )\n }\n\n return (\n <Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.5 }}>\n <ErrorTwoTone color={'error'} fontSize={'small'} />\n <Typography variant={'smallText1'} sx={{ color: 'error.main' }}>\n {data?.reason ?? 'Invalid'}\n </Typography>\n <Tooltip title={'Re-validate'}>\n <IconButton\n size={'small'}\n onClick={() => {\n refetch()\n }}\n aria-label={'Re-validate'}\n >\n <Replay fontSize={'small'} />\n </IconButton>\n </Tooltip>\n </Box>\n )\n}\n\nexport function EDucTemplateTable() {\n const {\n data,\n isLoading,\n error,\n hasNextPage,\n fetchNextPage,\n isFetchingNextPage,\n } = useListEDucTemplates()\n\n useEffect(() => {\n if (hasNextPage && !isFetchingNextPage) {\n void fetchNextPage()\n }\n }, [hasNextPage, isFetchingNextPage, fetchNextPage])\n\n const templates = useMemo(\n () => data?.pages.flatMap(page => page.results ?? []) ?? [],\n [data],\n )\n\n const table = useReactTable<EDucTemplate>({\n data: templates,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getRowId: row => row.templateId ?? '',\n })\n\n if (isLoading || (hasNextPage && templates.length === 0)) {\n return (\n <Box>\n <Skeleton\n variant={'rectangular'}\n height={200}\n data-testid={'EDucTemplateTable-loading'}\n />\n </Box>\n )\n }\n\n if (error) {\n return (\n <Alert severity={'error'}>\n <strong>Sorry, we couldn&apos;t load the eDUC templates.</strong>\n <br />\n {error.reason}\n </Alert>\n )\n }\n\n if (templates.length === 0) {\n return (\n <Alert severity={'info'}>\n No eDUC templates are registered in DocuSign.\n </Alert>\n )\n }\n\n return (\n <Box>\n <Typography variant={'body1'} sx={{ mb: 2, color: 'grey.700' }}>\n Templates are managed in DocuSign. Use the <strong>Validate</strong>{' '}\n action to check whether a template meets Synapse&apos;s eDUC\n requirements.\n </Typography>\n <StyledTanStackTable\n table={table}\n styledTableContainerProps={{ sx: { my: 2 } }}\n />\n </Box>\n )\n}\n\nexport default EDucTemplateTable\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewerDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dataaccess/ReviewerDashboard.tsx"],"names":[],"mappings":"AAsCA,KAAK,sBAAsB,GAAG;IAC5B,iGAAiG;IACjG,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wGAAwG;IACxG,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAuG9D;AAUD,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"ReviewerDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dataaccess/ReviewerDashboard.tsx"],"names":[],"mappings":"AAuCA,KAAK,sBAAsB,GAAG;IAC5B,iGAAiG;IACjG,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wGAAwG;IACxG,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAgH9D;AAUD,eAAe,iBAAiB,CAAA"}
@@ -6,66 +6,76 @@ import i from "../OrientationBanner/index.js";
6
6
  import { UserHistoryDashboard as a } from "./AccessHistoryDashboard.js";
7
7
  import { AccessRequirementDashboard as o } from "./AccessRequirementDashboard.js";
8
8
  import { DataAccessSubmissionDashboard as s } from "./AccessSubmissionDashboard.js";
9
- import c from "./SubmissionPage/SubmissionPage.js";
10
- import { useMemo as l } from "react";
11
- import { Typography as u } from "@mui/material";
12
- import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
13
- import { NavLink as m, Navigate as h, Outlet as g, RouterProvider as _, createBrowserRouter as v, createMemoryRouter as y, useParams as b } from "react-router";
14
- import { RouterProvider as x } from "react-router/dom";
9
+ import { EDucTemplateTable as c } from "./EDucTemplateTable.js";
10
+ import l from "./SubmissionPage/SubmissionPage.js";
11
+ import { useMemo as u } from "react";
12
+ import { Typography as d } from "@mui/material";
13
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
14
+ import { NavLink as h, Navigate as g, Outlet as _, RouterProvider as v, createBrowserRouter as y, createMemoryRouter as b, useParams as x } from "react-router";
15
+ import { RouterProvider as S } from "react-router/dom";
15
16
  //#region src/components/dataaccess/ReviewerDashboard.tsx
16
- function S(e) {
17
+ function C(e) {
17
18
  let { href: t, children: n, icon: i } = e;
18
- return /* @__PURE__ */ p(m, {
19
+ return /* @__PURE__ */ m(h, {
19
20
  className: "Tab",
20
21
  role: "tab",
21
22
  to: t,
22
- children: [/* @__PURE__ */ f(r, {
23
+ children: [/* @__PURE__ */ p(r, {
23
24
  icon: i,
24
25
  sx: { paddingRight: "0.2rem" }
25
- }), /* @__PURE__ */ f(u, {
26
+ }), /* @__PURE__ */ p(d, {
26
27
  variant: "buttonLink",
27
28
  children: n
28
29
  })]
29
30
  });
30
31
  }
31
- function C(r) {
32
- let { routerBaseName: c = "/DataAccessManagement:default", useMemoryRouter: u = !1 } = r, { data: m, isLoading: h } = n(), b = m?.isACTMember, C = m?.isACTMember || m?.isARReviewer, T = l(() => [{
32
+ function w(r) {
33
+ let { routerBaseName: l = "/DataAccessManagement:default", useMemoryRouter: d = !1 } = r, { data: h, isLoading: g } = n(), x = h?.isACTMember, w = h?.isACTMember || h?.isARReviewer, E = u(() => [{
33
34
  path: "/",
34
- element: /* @__PURE__ */ p("div", {
35
+ element: /* @__PURE__ */ m("div", {
35
36
  className: "ReviewerDashboard",
36
- children: [/* @__PURE__ */ p("div", {
37
+ children: [/* @__PURE__ */ m("div", {
37
38
  className: "Tabs",
38
39
  role: "tablist",
39
40
  children: [
40
- b && /* @__PURE__ */ f(S, {
41
+ x && /* @__PURE__ */ p(C, {
41
42
  href: "/AccessRequirements",
42
43
  icon: "accessClosed",
43
44
  children: "Access Requirements"
44
45
  }),
45
- C && /* @__PURE__ */ f(S, {
46
+ x && /* @__PURE__ */ p(C, {
47
+ href: "/EDucTemplates",
48
+ icon: "fileOutlined",
49
+ children: "eDUC Templates"
50
+ }),
51
+ w && /* @__PURE__ */ p(C, {
46
52
  href: "/Submissions",
47
53
  icon: "discussion",
48
54
  children: "Submissions"
49
55
  }),
50
- C && /* @__PURE__ */ f(S, {
56
+ w && /* @__PURE__ */ p(C, {
51
57
  href: "/UserAccessHistory",
52
58
  icon: "history",
53
59
  children: "User Access History"
54
60
  })
55
61
  ]
56
- }), /* @__PURE__ */ f("div", {
62
+ }), /* @__PURE__ */ p("div", {
57
63
  className: "TabContentContainer",
58
- children: /* @__PURE__ */ f(e, { children: /* @__PURE__ */ f(g, {}) })
64
+ children: /* @__PURE__ */ p(e, { children: /* @__PURE__ */ p(_, {}) })
59
65
  })]
60
66
  }),
61
67
  children: [
62
68
  {
63
69
  path: "AccessRequirements",
64
- element: b ? /* @__PURE__ */ f(o, {}) : null
70
+ element: x ? /* @__PURE__ */ p(o, {}) : null
71
+ },
72
+ {
73
+ path: "EDucTemplates",
74
+ element: x ? /* @__PURE__ */ p(c, {}) : null
65
75
  },
66
76
  {
67
77
  path: "Submissions",
68
- element: C ? /* @__PURE__ */ p(d, { children: [!b && /* @__PURE__ */ f(i, {
78
+ element: w ? /* @__PURE__ */ m(f, { children: [!x && /* @__PURE__ */ p(i, {
69
79
  name: "DataAccessManagement",
70
80
  title: "Getting Started With Data Access Management",
71
81
  text: "When someone requests access to data, that request will show up here. Clicking on the Request ID will take you to a page where you can review the request.",
@@ -73,32 +83,32 @@ function C(r) {
73
83
  margin: "-20px -30px 20px -30px",
74
84
  width: "auto"
75
85
  }
76
- }), /* @__PURE__ */ f(s, {})] }) : null
86
+ }), /* @__PURE__ */ p(s, {})] }) : null
77
87
  },
78
88
  {
79
89
  path: "Submissions/:id",
80
- element: C ? /* @__PURE__ */ f(w, {}) : null
90
+ element: w ? /* @__PURE__ */ p(T, {}) : null
81
91
  },
82
92
  {
83
93
  path: "UserAccessHistory",
84
- element: /* @__PURE__ */ f(a, {})
94
+ element: /* @__PURE__ */ p(a, {})
85
95
  }
86
96
  ]
87
- }], [b, C]), E = l(() => u ? y(T, { basename: c }) : v(T, { basename: c }), [
88
- u,
89
- T,
90
- c
97
+ }], [x, w]), D = u(() => d ? b(E, { basename: l }) : y(E, { basename: l }), [
98
+ d,
99
+ E,
100
+ l
91
101
  ]);
92
- return h ? /* @__PURE__ */ f(t, { size: 50 }) : f(u ? _ : x, { router: E });
102
+ return g ? /* @__PURE__ */ p(t, { size: 50 }) : p(d ? v : S, { router: D });
93
103
  }
94
- function w() {
95
- let { id: e } = b();
96
- return e ? /* @__PURE__ */ f(c, {
104
+ function T() {
105
+ let { id: e } = x();
106
+ return e ? /* @__PURE__ */ p(l, {
97
107
  submissionId: e,
98
108
  isReviewer: !0
99
- }) : /* @__PURE__ */ f(h, { to: "Submissions/" });
109
+ }) : /* @__PURE__ */ p(g, { to: "Submissions/" });
100
110
  }
101
111
  //#endregion
102
- export { C as ReviewerDashboard, C as default };
112
+ export { w as ReviewerDashboard, w as default };
103
113
 
104
114
  //# sourceMappingURL=ReviewerDashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewerDashboard.js","names":[],"sources":["../../../src/components/dataaccess/ReviewerDashboard.tsx"],"sourcesContent":["import { useGetCurrentUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { Typography } from '@mui/material'\nimport { ReactNode, useMemo } from 'react'\nimport {\n createBrowserRouter,\n createMemoryRouter,\n Navigate,\n NavLink,\n Outlet,\n RouteObject,\n RouterProvider,\n useParams,\n} from 'react-router'\nimport { RouterProvider as DOMRouterProvider } from 'react-router/dom'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport OrientationBanner from '../OrientationBanner'\nimport { UserHistoryDashboard } from './AccessHistoryDashboard'\nimport { AccessRequirementDashboard } from './AccessRequirementDashboard'\nimport { DataAccessSubmissionDashboard } from './AccessSubmissionDashboard'\nimport SubmissionPage from './SubmissionPage/SubmissionPage'\n\nfunction LinkTab(props: { href: string; children: ReactNode; icon: IconName }) {\n const { href, children, icon } = props\n return (\n <NavLink className=\"Tab\" role=\"tab\" to={href}>\n <IconSvg\n icon={icon}\n sx={{\n paddingRight: '0.2rem',\n }}\n />\n <Typography variant=\"buttonLink\">{children}</Typography>\n </NavLink>\n )\n}\n\ntype ReviewerDashboardProps = {\n /** Used to determine the base path for the component. Default is DataAccessManagement:default */\n routerBaseName?: string\n /** If true use a MemoryRouter, which prevents the browser URL from updating. For demo purposes only. */\n useMemoryRouter?: boolean\n}\n\nexport function ReviewerDashboard(props: ReviewerDashboardProps) {\n const {\n routerBaseName = '/DataAccessManagement:default',\n useMemoryRouter = false,\n } = props\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const hasActPermissions = userBundle?.isACTMember\n const hasReviewerPermissions =\n userBundle?.isACTMember || userBundle?.isARReviewer\n\n const routes: RouteObject[] = useMemo(\n () => [\n {\n path: '/',\n element: (\n <div className=\"ReviewerDashboard\">\n <div className=\"Tabs\" role=\"tablist\">\n {hasActPermissions && (\n <LinkTab href=\"/AccessRequirements\" icon=\"accessClosed\">\n Access Requirements\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab href=\"/Submissions\" icon=\"discussion\">\n Submissions\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab href=\"/UserAccessHistory\" icon=\"history\">\n User Access History\n </LinkTab>\n )}\n </div>\n <div className=\"TabContentContainer\">\n <SynapseErrorBoundary>\n <Outlet />\n </SynapseErrorBoundary>\n </div>\n </div>\n ),\n children: [\n {\n path: 'AccessRequirements',\n element: hasActPermissions ? <AccessRequirementDashboard /> : null,\n },\n {\n path: 'Submissions',\n element: hasReviewerPermissions ? (\n <>\n {!hasActPermissions && (\n <OrientationBanner\n name=\"DataAccessManagement\"\n title=\"Getting Started With Data Access Management\"\n text=\"When someone requests access to data, that request will show up here. Clicking on the Request ID will take you to a page where you can review the request.\"\n sx={{\n margin: '-20px -30px 20px -30px',\n width: 'auto',\n }}\n />\n )}\n <DataAccessSubmissionDashboard />\n </>\n ) : null,\n },\n {\n path: 'Submissions/:id',\n element: hasReviewerPermissions ? (\n <SubmissionPageRouteRenderer />\n ) : null,\n },\n {\n path: 'UserAccessHistory',\n element: <UserHistoryDashboard />,\n },\n ],\n },\n ],\n [hasActPermissions, hasReviewerPermissions],\n )\n\n const router = useMemo(() => {\n if (useMemoryRouter) {\n return createMemoryRouter(routes, {\n basename: routerBaseName,\n })\n } else {\n return createBrowserRouter(routes, {\n basename: routerBaseName,\n })\n }\n }, [useMemoryRouter, routes, routerBaseName])\n\n if (isLoading) {\n return <SynapseSpinner size={50} />\n }\n\n if (useMemoryRouter) {\n return <RouterProvider router={router} />\n }\n\n return <DOMRouterProvider router={router} />\n}\n\nfunction SubmissionPageRouteRenderer() {\n const { id } = useParams<{ id: string }>()\n if (!id) {\n return <Navigate to=\"Submissions/\" />\n }\n return <SubmissionPage submissionId={id} isReviewer={true} />\n}\n\nexport default ReviewerDashboard\n"],"mappings":";;;;;;;;;;;;;;;AAuBA,SAAS,EAAQ,GAA8D;CAC7E,IAAM,EAAE,SAAM,aAAU,YAAS;CACjC,OACE,kBAAC,GAAD;EAAS,WAAU;EAAM,MAAK;EAAM,IAAI;YAAxC,CACE,kBAAC,GAAD;GACQ;GACN,IAAI,EACF,cAAc,SAChB;EACD,CAAA,GACD,kBAAC,GAAD;GAAY,SAAQ;GAAc;EAAqB,CAAA,CAChD;;AAEb;AASA,SAAgB,EAAkB,GAA+B;CAC/D,IAAM,EACJ,oBAAiB,iCACjB,qBAAkB,OAChB,GAEE,EAAE,MAAM,GAAY,iBAAc,EAAwB,GAE1D,IAAoB,GAAY,aAChC,IACJ,GAAY,eAAe,GAAY,cAEnC,IAAwB,QACtB,CACJ;EACE,MAAM;EACN,SACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;IAAO,MAAK;cAA3B;KACG,KACC,kBAAC,GAAD;MAAS,MAAK;MAAsB,MAAK;gBAAe;KAE/C,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAe,MAAK;gBAAa;KAEtC,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAqB,MAAK;gBAAU;KAEzC,CAAA;IAER;OACL,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,CAAS,CAAA,EACW,CAAA;GACnB,CAAA,CACF;;EAEP,UAAU;GACR;IACE,MAAM;IACN,SAAS,IAAoB,kBAAC,GAAD,CAA6B,CAAA,IAAI;GAChE;GACA;IACE,MAAM;IACN,SAAS,IACP,kBAAA,GAAA,EAAA,UAAA,CACG,CAAC,KACA,kBAAC,GAAD;KACE,MAAK;KACL,OAAM;KACN,MAAK;KACL,IAAI;MACF,QAAQ;MACR,OAAO;KACT;IACD,CAAA,GAEH,kBAAC,GAAD,CAAgC,CAAA,CAChC,EAAA,CAAA,IACA;GACN;GACA;IACE,MAAM;IACN,SAAS,IACP,kBAAC,GAAD,CAA8B,CAAA,IAC5B;GACN;GACA;IACE,MAAM;IACN,SAAS,kBAAC,GAAD,CAAuB,CAAA;GAClC;EACF;CACF,CACF,GACA,CAAC,GAAmB,CAAsB,CAC5C,GAEM,IAAS,QACT,IACK,EAAmB,GAAQ,EAChC,UAAU,EACZ,CAAC,IAEM,EAAoB,GAAQ,EACjC,UAAU,EACZ,CAAC,GAEF;EAAC;EAAiB;EAAQ;CAAc,CAAC;CAU5C,OARI,IACK,kBAAC,GAAD,EAAgB,MAAM,GAAK,CAAA,IAI3B,EADL,IACM,IAGF,GAHC,EAAwB,UAAS,CAAA;AAI5C;AAEA,SAAS,IAA8B;CACrC,IAAM,EAAE,UAAO,EAA0B;CAIzC,OAHK,IAGE,kBAAC,GAAD;EAAgB,cAAc;EAAI,YAAY;CAAO,CAAA,IAFnD,kBAAC,GAAD,EAAU,IAAG,eAAgB,CAAA;AAGxC"}
1
+ {"version":3,"file":"ReviewerDashboard.js","names":[],"sources":["../../../src/components/dataaccess/ReviewerDashboard.tsx"],"sourcesContent":["import { useGetCurrentUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { Typography } from '@mui/material'\nimport { ReactNode, useMemo } from 'react'\nimport {\n createBrowserRouter,\n createMemoryRouter,\n Navigate,\n NavLink,\n Outlet,\n RouteObject,\n RouterProvider,\n useParams,\n} from 'react-router'\nimport { RouterProvider as DOMRouterProvider } from 'react-router/dom'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport OrientationBanner from '../OrientationBanner'\nimport { UserHistoryDashboard } from './AccessHistoryDashboard'\nimport { AccessRequirementDashboard } from './AccessRequirementDashboard'\nimport { DataAccessSubmissionDashboard } from './AccessSubmissionDashboard'\nimport { EDucTemplateTable } from './EDucTemplateTable'\nimport SubmissionPage from './SubmissionPage/SubmissionPage'\n\nfunction LinkTab(props: { href: string; children: ReactNode; icon: IconName }) {\n const { href, children, icon } = props\n return (\n <NavLink className=\"Tab\" role=\"tab\" to={href}>\n <IconSvg\n icon={icon}\n sx={{\n paddingRight: '0.2rem',\n }}\n />\n <Typography variant=\"buttonLink\">{children}</Typography>\n </NavLink>\n )\n}\n\ntype ReviewerDashboardProps = {\n /** Used to determine the base path for the component. Default is DataAccessManagement:default */\n routerBaseName?: string\n /** If true use a MemoryRouter, which prevents the browser URL from updating. For demo purposes only. */\n useMemoryRouter?: boolean\n}\n\nexport function ReviewerDashboard(props: ReviewerDashboardProps) {\n const {\n routerBaseName = '/DataAccessManagement:default',\n useMemoryRouter = false,\n } = props\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const hasActPermissions = userBundle?.isACTMember\n const hasReviewerPermissions =\n userBundle?.isACTMember || userBundle?.isARReviewer\n\n const routes: RouteObject[] = useMemo(\n () => [\n {\n path: '/',\n element: (\n <div className=\"ReviewerDashboard\">\n <div className=\"Tabs\" role=\"tablist\">\n {hasActPermissions && (\n <LinkTab href=\"/AccessRequirements\" icon=\"accessClosed\">\n Access Requirements\n </LinkTab>\n )}\n {hasActPermissions && (\n <LinkTab href=\"/EDucTemplates\" icon=\"fileOutlined\">\n eDUC Templates\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab href=\"/Submissions\" icon=\"discussion\">\n Submissions\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab href=\"/UserAccessHistory\" icon=\"history\">\n User Access History\n </LinkTab>\n )}\n </div>\n <div className=\"TabContentContainer\">\n <SynapseErrorBoundary>\n <Outlet />\n </SynapseErrorBoundary>\n </div>\n </div>\n ),\n children: [\n {\n path: 'AccessRequirements',\n element: hasActPermissions ? <AccessRequirementDashboard /> : null,\n },\n {\n path: 'EDucTemplates',\n element: hasActPermissions ? <EDucTemplateTable /> : null,\n },\n {\n path: 'Submissions',\n element: hasReviewerPermissions ? (\n <>\n {!hasActPermissions && (\n <OrientationBanner\n name=\"DataAccessManagement\"\n title=\"Getting Started With Data Access Management\"\n text=\"When someone requests access to data, that request will show up here. Clicking on the Request ID will take you to a page where you can review the request.\"\n sx={{\n margin: '-20px -30px 20px -30px',\n width: 'auto',\n }}\n />\n )}\n <DataAccessSubmissionDashboard />\n </>\n ) : null,\n },\n {\n path: 'Submissions/:id',\n element: hasReviewerPermissions ? (\n <SubmissionPageRouteRenderer />\n ) : null,\n },\n {\n path: 'UserAccessHistory',\n element: <UserHistoryDashboard />,\n },\n ],\n },\n ],\n [hasActPermissions, hasReviewerPermissions],\n )\n\n const router = useMemo(() => {\n if (useMemoryRouter) {\n return createMemoryRouter(routes, {\n basename: routerBaseName,\n })\n } else {\n return createBrowserRouter(routes, {\n basename: routerBaseName,\n })\n }\n }, [useMemoryRouter, routes, routerBaseName])\n\n if (isLoading) {\n return <SynapseSpinner size={50} />\n }\n\n if (useMemoryRouter) {\n return <RouterProvider router={router} />\n }\n\n return <DOMRouterProvider router={router} />\n}\n\nfunction SubmissionPageRouteRenderer() {\n const { id } = useParams<{ id: string }>()\n if (!id) {\n return <Navigate to=\"Submissions/\" />\n }\n return <SubmissionPage submissionId={id} isReviewer={true} />\n}\n\nexport default ReviewerDashboard\n"],"mappings":";;;;;;;;;;;;;;;;AAwBA,SAAS,EAAQ,GAA8D;CAC7E,IAAM,EAAE,SAAM,aAAU,YAAS;CACjC,OACE,kBAAC,GAAD;EAAS,WAAU;EAAM,MAAK;EAAM,IAAI;YAAxC,CACE,kBAAC,GAAD;GACQ;GACN,IAAI,EACF,cAAc,SAChB;EACD,CAAA,GACD,kBAAC,GAAD;GAAY,SAAQ;GAAc;EAAqB,CAAA,CAChD;;AAEb;AASA,SAAgB,EAAkB,GAA+B;CAC/D,IAAM,EACJ,oBAAiB,iCACjB,qBAAkB,OAChB,GAEE,EAAE,MAAM,GAAY,iBAAc,EAAwB,GAE1D,IAAoB,GAAY,aAChC,IACJ,GAAY,eAAe,GAAY,cAEnC,IAAwB,QACtB,CACJ;EACE,MAAM;EACN,SACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;IAAO,MAAK;cAA3B;KACG,KACC,kBAAC,GAAD;MAAS,MAAK;MAAsB,MAAK;gBAAe;KAE/C,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAiB,MAAK;gBAAe;KAE1C,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAe,MAAK;gBAAa;KAEtC,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAqB,MAAK;gBAAU;KAEzC,CAAA;IAER;OACL,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,CAAS,CAAA,EACW,CAAA;GACnB,CAAA,CACF;;EAEP,UAAU;GACR;IACE,MAAM;IACN,SAAS,IAAoB,kBAAC,GAAD,CAA6B,CAAA,IAAI;GAChE;GACA;IACE,MAAM;IACN,SAAS,IAAoB,kBAAC,GAAD,CAAoB,CAAA,IAAI;GACvD;GACA;IACE,MAAM;IACN,SAAS,IACP,kBAAA,GAAA,EAAA,UAAA,CACG,CAAC,KACA,kBAAC,GAAD;KACE,MAAK;KACL,OAAM;KACN,MAAK;KACL,IAAI;MACF,QAAQ;MACR,OAAO;KACT;IACD,CAAA,GAEH,kBAAC,GAAD,CAAgC,CAAA,CAChC,EAAA,CAAA,IACA;GACN;GACA;IACE,MAAM;IACN,SAAS,IACP,kBAAC,GAAD,CAA8B,CAAA,IAC5B;GACN;GACA;IACE,MAAM;IACN,SAAS,kBAAC,GAAD,CAAuB,CAAA;GAClC;EACF;CACF,CACF,GACA,CAAC,GAAmB,CAAsB,CAC5C,GAEM,IAAS,QACT,IACK,EAAmB,GAAQ,EAChC,UAAU,EACZ,CAAC,IAEM,EAAoB,GAAQ,EACjC,UAAU,EACZ,CAAC,GAEF;EAAC;EAAiB;EAAQ;CAAc,CAAC;CAU5C,OARI,IACK,kBAAC,GAAD,EAAgB,MAAM,GAAK,CAAA,IAI3B,EADL,IACM,IAGF,GAHC,EAAwB,UAAS,CAAA;AAI5C;AAEA,SAAS,IAA8B;CACrC,IAAM,EAAE,UAAO,EAA0B;CAIzC,OAHK,IAGE,kBAAC,GAAD;EAAgB,cAAc;EAAI,YAAY;CAAO,CAAA,IAFnD,kBAAC,GAAD,EAAU,IAAG,eAAgB,CAAA;AAGxC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Lists the requester's active eDUC signatures (routed / signed but not yet submitted).
3
+ *
4
+ * The underlying query walks every page of `POST /dataAccessRequest/list` inside its `queryFn`
5
+ * because filtering is done client-side pending PLFM-9907 (which will add an `isEDuc` server-side
6
+ * filter). Once server-side filtering ships, callers can switch back to a per-page infinite query
7
+ * with a "Show More" button.
8
+ *
9
+ * Renders nothing when the fully-loaded, filtered list is empty.
10
+ */
11
+ export declare function InFlightEDucSignaturesTable(): import("react/jsx-runtime").JSX.Element | null;
12
+ //# sourceMappingURL=InFlightEDucSignaturesTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlightEDucSignaturesTable.d.ts","sourceRoot":"","sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.tsx"],"names":[],"mappings":"AA2DA;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,mDAqD1C"}
@@ -0,0 +1,84 @@
1
+ import { useListAllUserDataAccessRequests as e } from "../../../synapse-queries/dataaccess/useEDuc.js";
2
+ import "../../../synapse-queries/index.js";
3
+ import { SkeletonTable as t } from "../../Skeleton/SkeletonTable.js";
4
+ import "../../Skeleton/index.js";
5
+ import n from "../../TanStackTable/StyledTanStackTable.js";
6
+ import r from "../../TanStackTable/ColumnHeader.js";
7
+ import { useMemo as i } from "react";
8
+ import { Alert as a, Box as o, Typography as s } from "@mui/material";
9
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
10
+ import { createColumnHelper as u, getCoreRowModel as d, useReactTable as f } from "@tanstack/react-table";
11
+ //#region src/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.tsx
12
+ var p = [
13
+ "sent",
14
+ "delivered",
15
+ "completed"
16
+ ], m = {
17
+ sent: "Signatures pending",
18
+ delivered: "Signatures pending",
19
+ completed: "Ready to submit"
20
+ }, h = u(), g = [
21
+ h.accessor("accessRequirementName", {
22
+ header: (e) => /* @__PURE__ */ c(r, {
23
+ ...e,
24
+ title: "Request type"
25
+ }),
26
+ enableSorting: !1,
27
+ enableColumnFilter: !1
28
+ }),
29
+ h.display({
30
+ id: "signatureProgress",
31
+ header: (e) => /* @__PURE__ */ c(r, {
32
+ ...e,
33
+ title: "Signature progress"
34
+ }),
35
+ enableSorting: !1,
36
+ cell: (e) => `${e.row.original.signaturesAcquired ?? 0} of ${e.row.original.signaturesRequested ?? 0}`,
37
+ enableColumnFilter: !1,
38
+ size: 150
39
+ }),
40
+ h.accessor("status", {
41
+ header: (e) => /* @__PURE__ */ c(r, {
42
+ ...e,
43
+ title: "Current status"
44
+ }),
45
+ enableSorting: !1,
46
+ cell: (e) => {
47
+ let t = e.getValue();
48
+ return t ? m[t] ?? t : "";
49
+ },
50
+ enableColumnFilter: !1,
51
+ size: 150
52
+ })
53
+ ];
54
+ function _() {
55
+ let { data: r, isLoading: u, error: m } = e(), h = i(() => (r ?? []).filter((e) => e.isEDuc === !0 && e.status !== void 0 && p.includes(e.status)), [r]), _ = f({
56
+ data: h,
57
+ columns: g,
58
+ getCoreRowModel: d(),
59
+ columnResizeMode: "onChange"
60
+ });
61
+ return m ? /* @__PURE__ */ l(a, {
62
+ severity: "error",
63
+ children: [
64
+ /* @__PURE__ */ c("strong", { children: "Sorry, we couldn't load your in-flight eDUC signatures." }),
65
+ /* @__PURE__ */ c("br", {}),
66
+ m.reason
67
+ ]
68
+ }) : u ? /* @__PURE__ */ c(t, {
69
+ numCols: g.length,
70
+ fullWidthCells: !0
71
+ }) : h.length === 0 ? null : /* @__PURE__ */ l(o, { children: [/* @__PURE__ */ c(s, {
72
+ variant: "headline2",
73
+ component: "h2",
74
+ gutterBottom: !0,
75
+ children: "In-flight eDUC signatures"
76
+ }), /* @__PURE__ */ c(n, {
77
+ table: _,
78
+ fullWidth: !0
79
+ })] });
80
+ }
81
+ //#endregion
82
+ export { _ as InFlightEDucSignaturesTable };
83
+
84
+ //# sourceMappingURL=InFlightEDucSignaturesTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlightEDucSignaturesTable.js","names":[],"sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.tsx"],"sourcesContent":["import { SkeletonTable } from '@/components/Skeleton'\nimport ColumnHeader from '@/components/TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '@/components/TanStackTable/StyledTanStackTable'\nimport { useListAllUserDataAccessRequests } from '@/synapse-queries'\nimport { Alert, Box, Typography } from '@mui/material'\nimport {\n AccessRequestSummary,\n AccessRequestSummaryStatusEnum,\n} from '@sage-bionetworks/synapse-client'\nimport {\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table'\nimport { useMemo } from 'react'\n\nconst IN_FLIGHT_STATUSES: readonly AccessRequestSummaryStatusEnum[] = [\n 'sent',\n 'delivered',\n 'completed',\n] as const\n\nconst STATUS_DISPLAY: Record<string, string> = {\n sent: 'Signatures pending',\n delivered: 'Signatures pending',\n completed: 'Ready to submit',\n}\n\nconst columnHelper = createColumnHelper<AccessRequestSummary>()\nconst columns = [\n columnHelper.accessor('accessRequirementName', {\n header: props => <ColumnHeader {...props} title={'Request type'} />,\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.display({\n id: 'signatureProgress',\n header: props => <ColumnHeader {...props} title={'Signature progress'} />,\n enableSorting: false,\n cell: ctx => {\n const acquired = ctx.row.original.signaturesAcquired ?? 0\n const requested = ctx.row.original.signaturesRequested ?? 0\n return `${acquired} of ${requested}`\n },\n enableColumnFilter: false,\n size: 150,\n }),\n columnHelper.accessor('status', {\n header: props => <ColumnHeader {...props} title={'Current status'} />,\n enableSorting: false,\n cell: ctx => {\n const status = ctx.getValue()\n return status ? (STATUS_DISPLAY[status] ?? status) : ''\n },\n enableColumnFilter: false,\n size: 150,\n }),\n]\n\n/**\n * Lists the requester's active eDUC signatures (routed / signed but not yet submitted).\n *\n * The underlying query walks every page of `POST /dataAccessRequest/list` inside its `queryFn`\n * because filtering is done client-side pending PLFM-9907 (which will add an `isEDuc` server-side\n * filter). Once server-side filtering ships, callers can switch back to a per-page infinite query\n * with a \"Show More\" button.\n *\n * Renders nothing when the fully-loaded, filtered list is empty.\n */\nexport function InFlightEDucSignaturesTable() {\n const {\n data: summaries,\n isLoading,\n error,\n } = useListAllUserDataAccessRequests()\n\n const rows = useMemo(\n () =>\n (summaries ?? []).filter(\n summary =>\n summary.isEDuc === true &&\n summary.status !== undefined &&\n (IN_FLIGHT_STATUSES as readonly string[]).includes(summary.status),\n ),\n [summaries],\n )\n\n const table = useReactTable({\n data: rows,\n columns,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n })\n\n if (error) {\n return (\n <Alert severity={'error'}>\n <strong>\n Sorry, we couldn&apos;t load your in-flight eDUC signatures.\n </strong>\n <br />\n {error.reason}\n </Alert>\n )\n }\n\n if (isLoading) {\n return <SkeletonTable numCols={columns.length} fullWidthCells />\n }\n\n if (rows.length === 0) {\n return null\n }\n\n return (\n <Box>\n <Typography variant={'headline2'} component={'h2'} gutterBottom>\n In-flight eDUC signatures\n </Typography>\n <StyledTanStackTable table={table} fullWidth={true} />\n </Box>\n )\n}\n"],"mappings":";;;;;;;;;;;AAgBA,IAAM,IAAgE;CACpE;CACA;CACA;AACF,GAEM,IAAyC;CAC7C,MAAM;CACN,WAAW;CACX,WAAW;AACb,GAEM,IAAe,EAAyC,GACxD,IAAU;CACd,EAAa,SAAS,yBAAyB;EAC7C,SAAQ,MAAS,kBAAC,GAAD;GAAc,GAAI;GAAO,OAAO;EAAiB,CAAA;EAClE,eAAe;EACf,oBAAoB;CACtB,CAAC;CACD,EAAa,QAAQ;EACnB,IAAI;EACJ,SAAQ,MAAS,kBAAC,GAAD;GAAc,GAAI;GAAO,OAAO;EAAuB,CAAA;EACxE,eAAe;EACf,OAAM,MAGG,GAFU,EAAI,IAAI,SAAS,sBAAsB,EAErC,MADD,EAAI,IAAI,SAAS,uBAAuB;EAG5D,oBAAoB;EACpB,MAAM;CACR,CAAC;CACD,EAAa,SAAS,UAAU;EAC9B,SAAQ,MAAS,kBAAC,GAAD;GAAc,GAAI;GAAO,OAAO;EAAmB,CAAA;EACpE,eAAe;EACf,OAAM,MAAO;GACX,IAAM,IAAS,EAAI,SAAS;GAC5B,OAAO,IAAU,EAAe,MAAW,IAAU;EACvD;EACA,oBAAoB;EACpB,MAAM;CACR,CAAC;AACH;AAYA,SAAgB,IAA8B;CAC5C,IAAM,EACJ,MAAM,GACN,cACA,aACE,EAAiC,GAE/B,IAAO,SAER,KAAa,CAAC,GAAG,QAChB,MACE,EAAQ,WAAW,MACnB,EAAQ,WAAW,KAAA,KAClB,EAAyC,SAAS,EAAQ,MAAM,CACrE,GACF,CAAC,CAAS,CACZ,GAEM,IAAQ,EAAc;EAC1B,MAAM;EACN;EACA,iBAAiB,EAAgB;EACjC,kBAAkB;CACpB,CAAC;CAsBD,OApBI,IAEA,kBAAC,GAAD;EAAO,UAAU;YAAjB;GACE,kBAAC,UAAD,EAAA,UAAQ,0DAEA,CAAA;GACR,kBAAC,MAAD,CAAK,CAAA;GACJ,EAAM;EACF;MAIP,IACK,kBAAC,GAAD;EAAe,SAAS,EAAQ;EAAQ,gBAAA;CAAgB,CAAA,IAG7D,EAAK,WAAW,IACX,OAIP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAAY,SAAS;EAAa,WAAW;EAAM,cAAA;YAAa;CAEpD,CAAA,GACZ,kBAAC,GAAD;EAA4B;EAAO,WAAW;CAAO,CAAA,CAClD,EAAA,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserAccessRequestHistoryPage.d.ts","sourceRoot":"","sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.tsx"],"names":[],"mappings":"AA4BA,wBAAgB,4BAA4B,4CAuC3C"}
1
+ {"version":3,"file":"UserAccessRequestHistoryPage.d.ts","sourceRoot":"","sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.tsx"],"names":[],"mappings":"AA6BA,wBAAgB,4BAA4B,4CAwC3C"}
@@ -1,47 +1,49 @@
1
- import { UserAccessRequestHistoryTable as e } from "./UserAccessRequestHistoryTable.js";
2
- import { Accordion as t, AccordionDetails as n, AccordionSummary as r, Stack as i, Typography as a } from "@mui/material";
3
- import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
4
- import l from "@mui/icons-material/ExpandMore";
1
+ import { InFlightEDucSignaturesTable as e } from "./InFlightEDucSignaturesTable.js";
2
+ import { UserAccessRequestHistoryTable as t } from "./UserAccessRequestHistoryTable.js";
3
+ import { Accordion as n, AccordionDetails as r, AccordionSummary as i, Stack as a, Typography as o } from "@mui/material";
4
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
5
+ import u from "@mui/icons-material/ExpandMore";
5
6
  //#region src/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.tsx
6
- var u = [];
7
- function d() {
8
- return /* @__PURE__ */ c(i, {
7
+ var d = [];
8
+ function f() {
9
+ return /* @__PURE__ */ l(a, {
9
10
  sx: { gap: 2 },
10
11
  children: [
11
- /* @__PURE__ */ s(a, {
12
+ /* @__PURE__ */ c(o, {
12
13
  variant: "headline1",
13
14
  gutterBottom: !0,
14
15
  children: "History of your access requests"
15
16
  }),
16
- /* @__PURE__ */ s(a, {
17
+ /* @__PURE__ */ c(o, {
17
18
  variant: "body1",
18
19
  gutterBottom: !0,
19
20
  children: "This list represents every access request you have been named in. It includes requests you've submitted yourself, and requests submitted by others, which you were named as a requester on."
20
21
  }),
21
- /* @__PURE__ */ s(a, {
22
+ /* @__PURE__ */ c(o, {
22
23
  variant: "body1",
23
24
  gutterBottom: !0,
24
25
  children: "Note: Requests where your access has been revoked will appear as \"Approved\"."
25
26
  }),
26
- u.length > 0 && /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s(a, {
27
+ d.length > 0 && /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c(o, {
27
28
  variant: "headline2",
28
29
  gutterBottom: !0,
29
30
  children: "Frequently Asked Questions"
30
- }), /* @__PURE__ */ s("div", { children: u.map((e) => /* @__PURE__ */ c(t, {
31
+ }), /* @__PURE__ */ c("div", { children: d.map((e) => /* @__PURE__ */ l(n, {
31
32
  sx: { p: 1 },
32
- children: [/* @__PURE__ */ s(r, {
33
- expandIcon: /* @__PURE__ */ s(l, {}),
34
- children: /* @__PURE__ */ s(a, {
33
+ children: [/* @__PURE__ */ c(i, {
34
+ expandIcon: /* @__PURE__ */ c(u, {}),
35
+ children: /* @__PURE__ */ c(o, {
35
36
  variant: "headline3",
36
37
  children: e.summary
37
38
  })
38
- }), /* @__PURE__ */ s(n, { children: e.details })]
39
+ }), /* @__PURE__ */ c(r, { children: e.details })]
39
40
  }, e.summary)) })] }),
40
- /* @__PURE__ */ s(e, {})
41
+ /* @__PURE__ */ c(e, {}),
42
+ /* @__PURE__ */ c(t, {})
41
43
  ]
42
44
  });
43
45
  }
44
46
  //#endregion
45
- export { d as UserAccessRequestHistoryPage };
47
+ export { f as UserAccessRequestHistoryPage };
46
48
 
47
49
  //# sourceMappingURL=UserAccessRequestHistoryPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserAccessRequestHistoryPage.js","names":[],"sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.tsx"],"sourcesContent":["import ExpandMoreIcon from '@mui/icons-material/ExpandMore'\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Stack,\n Typography,\n} from '@mui/material'\nimport { UserAccessRequestHistoryTable } from './UserAccessRequestHistoryTable'\n\ntype FaqItem = {\n summary: string\n details: string\n}\n\nconst faqContent: FaqItem[] = [\n // {\n // summary:\n // 'Why do I still have access to data when I have an expired, canceled, or rejected access request?',\n // details:\n // \"This table shows all the requests you've ever been part of, including requests that were canceled, rejected, or that have since expired. If an older request was canceled, rejected, or has expired, but a newer request was approved and is still active, you'll still have access to the data.\",\n // },\n // {\n // summary: 'Some other question?',\n // details: 'Here is another answer!',\n // },\n]\n\nexport function UserAccessRequestHistoryPage() {\n return (\n <Stack\n sx={{\n gap: 2,\n }}\n >\n <Typography variant=\"headline1\" gutterBottom>\n History of your access requests\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n This list represents every access request you have been named in. It\n includes requests you&apos;ve submitted yourself, and requests submitted\n by others, which you were named as a requester on.\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n Note: Requests where your access has been revoked will appear as\n &quot;Approved&quot;.\n </Typography>\n {faqContent.length > 0 && (\n <>\n <Typography variant=\"headline2\" gutterBottom>\n Frequently Asked Questions\n </Typography>\n <div>\n {faqContent.map(faq => (\n <Accordion key={faq.summary} sx={{ p: 1 }}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"headline3\">{faq.summary}</Typography>\n </AccordionSummary>\n <AccordionDetails>{faq.details}</AccordionDetails>\n </Accordion>\n ))}\n </div>\n </>\n )}\n <UserAccessRequestHistoryTable />\n </Stack>\n )\n}\n"],"mappings":";;;;;AAeA,IAAM,IAAwB,CAW9B;AAEA,SAAgB,IAA+B;CAC7C,OACE,kBAAC,GAAD;EACE,IAAI,EACF,KAAK,EACP;YAHF;GAKE,kBAAC,GAAD;IAAY,SAAQ;IAAY,cAAA;cAAa;GAEjC,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAQ;IAAQ,cAAA;cAAa;GAI7B,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAQ;IAAQ,cAAA;cAAa;GAG7B,CAAA;GACX,EAAW,SAAS,KACnB,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;IAAY,SAAQ;IAAY,cAAA;cAAa;GAEjC,CAAA,GACZ,kBAAC,OAAD,EAAA,UACG,EAAW,KAAI,MACd,kBAAC,GAAD;IAA6B,IAAI,EAAE,GAAG,EAAE;cAAxC,CACE,kBAAC,GAAD;KAAkB,YAAY,kBAAC,GAAD,CAAiB,CAAA;eAC7C,kBAAC,GAAD;MAAY,SAAQ;gBAAa,EAAI;KAAoB,CAAA;IACzC,CAAA,GAClB,kBAAC,GAAD,EAAA,UAAmB,EAAI,QAA0B,CAAA,CACxC;MALK,EAAI,OAKT,CACZ,EACE,CAAA,CACL,EAAA,CAAA;GAEJ,kBAAC,GAAD,CAAgC,CAAA;EAC3B;;AAEX"}
1
+ {"version":3,"file":"UserAccessRequestHistoryPage.js","names":[],"sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.tsx"],"sourcesContent":["import ExpandMoreIcon from '@mui/icons-material/ExpandMore'\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Stack,\n Typography,\n} from '@mui/material'\nimport { InFlightEDucSignaturesTable } from './InFlightEDucSignaturesTable'\nimport { UserAccessRequestHistoryTable } from './UserAccessRequestHistoryTable'\n\ntype FaqItem = {\n summary: string\n details: string\n}\n\nconst faqContent: FaqItem[] = [\n // {\n // summary:\n // 'Why do I still have access to data when I have an expired, canceled, or rejected access request?',\n // details:\n // \"This table shows all the requests you've ever been part of, including requests that were canceled, rejected, or that have since expired. If an older request was canceled, rejected, or has expired, but a newer request was approved and is still active, you'll still have access to the data.\",\n // },\n // {\n // summary: 'Some other question?',\n // details: 'Here is another answer!',\n // },\n]\n\nexport function UserAccessRequestHistoryPage() {\n return (\n <Stack\n sx={{\n gap: 2,\n }}\n >\n <Typography variant=\"headline1\" gutterBottom>\n History of your access requests\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n This list represents every access request you have been named in. It\n includes requests you&apos;ve submitted yourself, and requests submitted\n by others, which you were named as a requester on.\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n Note: Requests where your access has been revoked will appear as\n &quot;Approved&quot;.\n </Typography>\n {faqContent.length > 0 && (\n <>\n <Typography variant=\"headline2\" gutterBottom>\n Frequently Asked Questions\n </Typography>\n <div>\n {faqContent.map(faq => (\n <Accordion key={faq.summary} sx={{ p: 1 }}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"headline3\">{faq.summary}</Typography>\n </AccordionSummary>\n <AccordionDetails>{faq.details}</AccordionDetails>\n </Accordion>\n ))}\n </div>\n </>\n )}\n <InFlightEDucSignaturesTable />\n <UserAccessRequestHistoryTable />\n </Stack>\n )\n}\n"],"mappings":";;;;;;AAgBA,IAAM,IAAwB,CAW9B;AAEA,SAAgB,IAA+B;CAC7C,OACE,kBAAC,GAAD;EACE,IAAI,EACF,KAAK,EACP;YAHF;GAKE,kBAAC,GAAD;IAAY,SAAQ;IAAY,cAAA;cAAa;GAEjC,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAQ;IAAQ,cAAA;cAAa;GAI7B,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAQ;IAAQ,cAAA;cAAa;GAG7B,CAAA;GACX,EAAW,SAAS,KACnB,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;IAAY,SAAQ;IAAY,cAAA;cAAa;GAEjC,CAAA,GACZ,kBAAC,OAAD,EAAA,UACG,EAAW,KAAI,MACd,kBAAC,GAAD;IAA6B,IAAI,EAAE,GAAG,EAAE;cAAxC,CACE,kBAAC,GAAD;KAAkB,YAAY,kBAAC,GAAD,CAAiB,CAAA;eAC7C,kBAAC,GAAD;MAAY,SAAQ;gBAAa,EAAI;KAAoB,CAAA;IACzC,CAAA,GAClB,kBAAC,GAAD,EAAA,UAAmB,EAAI,QAA0B,CAAA,CACxC;MALK,EAAI,OAKT,CACZ,EACE,CAAA,CACL,EAAA,CAAA;GAEJ,kBAAC,GAAD,CAA8B,CAAA;GAC9B,kBAAC,GAAD,CAAgC,CAAA;EAC3B;;AAEX"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreatedByModifiedBy.d.ts","sourceRoot":"","sources":["../../../../src/components/entity/page/CreatedByModifiedBy.tsx"],"names":[],"mappings":"AA2BA,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAeD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CA+IlE;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"CreatedByModifiedBy.d.ts","sourceRoot":"","sources":["../../../../src/components/entity/page/CreatedByModifiedBy.tsx"],"names":[],"mappings":"AAiCA,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAeD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CA0GlE;AAED,eAAe,mBAAmB,CAAA"}
@@ -6,114 +6,96 @@ import "../../../synapse-queries/index.js";
6
6
  import { formatDate as o } from "../../../utils/functions/DateFormatter.js";
7
7
  import s from "../../utils/ConditionalWrapper.js";
8
8
  import { UserBadge as c } from "../../UserCard/UserBadge.js";
9
- import { Box as l, Breadcrumbs as u, Skeleton as d, Tooltip as f, Typography as p, useMediaQuery as m, useTheme as h } from "@mui/material";
10
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
11
- import { InfoTwoTone as y } from "@mui/icons-material";
12
- import b from "dayjs";
9
+ import { INFO_ICON_SX as l, getTableLastRebuiltTooltip as u, getTableModifiedOnAccessibleLabel as d, getTableModifiedOnTooltip as f } from "./createdByModifiedByTooltips.js";
10
+ import { Box as p, Breadcrumbs as m, Skeleton as h, Tooltip as g, Typography as _, useMediaQuery as v, useTheme as y } from "@mui/material";
11
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
12
+ import { InfoTwoTone as S } from "@mui/icons-material";
13
+ import C from "dayjs";
13
14
  //#region src/components/entity/page/CreatedByModifiedBy.tsx
14
- function x() {
15
- return m(h().breakpoints.down("sm")) ? null : /* @__PURE__ */ _(p, {
15
+ function w() {
16
+ return v(y().breakpoints.down("sm")) ? null : /* @__PURE__ */ b(_, {
16
17
  variant: "breadcrumb1",
17
18
  sx: { color: "grey.700" },
18
19
  children: "/"
19
20
  });
20
21
  }
21
- function S(m) {
22
- let { entityId: h, versionNumber: S } = m, C = `${h}${S ? `.${S}` : ""}`, { data: w } = i(h, S), { data: T } = a({
23
- entityId: h,
24
- query: { sql: `SELECT * FROM ${C} LIMIT 0` },
22
+ function T(v) {
23
+ let { entityId: y, versionNumber: T } = v, E = `${y}${T ? `.${T}` : ""}`, { data: D } = i(y, T), { data: O } = a({
24
+ entityId: y,
25
+ query: { sql: `SELECT * FROM ${E} LIMIT 0` },
25
26
  partMask: 128,
26
27
  concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest"
27
- }, { enabled: !!(w && r(w)) }), E = T?.responseBody?.lastUpdatedOn, D = w ? t(e(w.concreteType)) : "", O = /* @__PURE__ */ v(g, { children: [
28
- /* @__PURE__ */ v("p", { children: [
29
- "This is when the configuration of this ",
30
- D,
31
- " was last changed."
32
- ] }),
33
- /* @__PURE__ */ _("p", { children: "Configuration changes may be triggered by (for example):" }),
34
- /* @__PURE__ */ v("ul", { children: [/* @__PURE__ */ v("li", { children: ["Editing the name of the ", D] }), /* @__PURE__ */ v("li", { children: ["Updating the schema used by the ", D] })] }),
35
- /* @__PURE__ */ v("p", { children: [
36
- "This does NOT reflect changes to the data displayed in the the",
37
- " ",
38
- D,
39
- "."
40
- ] })
41
- ] }), k = `This is when the configuration of this ${D} was last changed.`, A = `When data changes, the ${D} is rebuilt to reflect those changes. This is the last time changes were made to the data.`, j = `${C}-createdByTooltip`, M = `${C}-modifiedByTooltip`, N = `${C}-lastUpdatedTooltip`, P = {
42
- width: "16px",
43
- height: "16px",
44
- ml: "4px",
45
- verticalAlign: "text-bottom"
46
- };
47
- return /* @__PURE__ */ _(l, {
28
+ }, { enabled: !!(D && r(D)) }), k = O?.responseBody?.lastUpdatedOn, A = D ? t(e(D.concreteType)) : "", j = `${E}-createdByTooltip`, M = `${E}-modifiedByTooltip`, N = `${E}-lastUpdatedTooltip`;
29
+ return /* @__PURE__ */ b(p, {
48
30
  sx: (e) => ({
49
31
  bgcolor: "grey.100",
50
- py: "10px",
32
+ p: "10px",
51
33
  [e.breakpoints.down("sm")]: { p: "24px 40px" }
52
34
  }),
53
- children: /* @__PURE__ */ v(u, {
54
- separator: /* @__PURE__ */ _(x, {}),
35
+ children: /* @__PURE__ */ x(m, {
36
+ separator: /* @__PURE__ */ b(w, {}),
55
37
  sx: (e) => ({ "& .MuiBreadcrumbs-ol": {
56
38
  justifyContent: "center",
57
39
  [e.breakpoints.down("sm")]: { gap: "4px" }
58
40
  } }),
59
41
  children: [
60
- /* @__PURE__ */ _(s, {
61
- condition: !w,
62
- wrapper: d,
63
- children: /* @__PURE__ */ v(p, {
42
+ /* @__PURE__ */ b(s, {
43
+ condition: !D,
44
+ wrapper: h,
45
+ children: /* @__PURE__ */ x(_, {
64
46
  sx: { color: "grey.700" },
65
47
  variant: "breadcrumb1",
66
48
  "aria-describedby": j,
67
49
  children: [
68
- D,
50
+ A,
69
51
  " created by ",
70
- /* @__PURE__ */ _(c, { userId: w?.createdBy }),
52
+ /* @__PURE__ */ b(c, { userId: D?.createdBy }),
71
53
  " ",
72
54
  "on ",
73
- o(b(w?.createdOn)),
74
- w && n(w) && /* @__PURE__ */ _(f, {
55
+ o(C(D?.createdOn)),
56
+ D && n(D) && /* @__PURE__ */ b(g, {
75
57
  id: j,
76
58
  title: "This is the user who created this Dataset. This may not be the same person who generated the files in this Dataset, or who originally uploaded these files to Synapse.",
77
- children: /* @__PURE__ */ _(y, { sx: P })
59
+ children: /* @__PURE__ */ b(S, { sx: l })
78
60
  })
79
61
  ]
80
62
  })
81
63
  }),
82
- /* @__PURE__ */ _(s, {
83
- condition: !w,
84
- wrapper: d,
85
- children: /* @__PURE__ */ v(p, {
64
+ /* @__PURE__ */ b(s, {
65
+ condition: !D,
66
+ wrapper: h,
67
+ children: /* @__PURE__ */ x(_, {
86
68
  sx: { color: "grey.700" },
87
69
  variant: "breadcrumb1",
88
70
  "aria-describedby": M,
89
71
  children: [
90
- w && r(w) ? "Configuration" : D,
72
+ D && r(D) ? "Configuration" : A,
91
73
  " last modified by ",
92
- /* @__PURE__ */ _(c, { userId: w?.modifiedBy }),
74
+ /* @__PURE__ */ b(c, { userId: D?.modifiedBy }),
93
75
  " on",
94
76
  " ",
95
- o(b(w?.modifiedOn)),
96
- w && r(w) && /* @__PURE__ */ _(f, {
77
+ o(C(D?.modifiedOn)),
78
+ D && r(D) && /* @__PURE__ */ b(g, {
97
79
  id: M,
98
- title: O,
99
- "aria-label": k,
100
- children: /* @__PURE__ */ _(y, { sx: P })
80
+ title: f(A),
81
+ "aria-label": d(A),
82
+ children: /* @__PURE__ */ b(S, { sx: l })
101
83
  })
102
84
  ]
103
85
  })
104
86
  }),
105
- E && /* @__PURE__ */ v(p, {
87
+ k && /* @__PURE__ */ x(_, {
106
88
  sx: { color: "grey.700" },
107
89
  variant: "breadcrumb1",
108
90
  "aria-describedby": N,
109
91
  children: [
110
- D,
92
+ A,
111
93
  " last rebuilt on ",
112
- o(b(E)),
113
- /* @__PURE__ */ _(f, {
114
- title: A,
94
+ o(C(k)),
95
+ /* @__PURE__ */ b(g, {
96
+ title: u(A),
115
97
  id: N,
116
- children: /* @__PURE__ */ _(y, { sx: P })
98
+ children: /* @__PURE__ */ b(S, { sx: l })
117
99
  })
118
100
  ]
119
101
  })
@@ -122,6 +104,6 @@ function S(m) {
122
104
  });
123
105
  }
124
106
  //#endregion
125
- export { S as CreatedByModifiedBy, S as default };
107
+ export { T as CreatedByModifiedBy, T as default };
126
108
 
127
109
  //# sourceMappingURL=CreatedByModifiedBy.js.map