@databiosphere/findable-ui 21.3.0 → 22.0.0
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/.release-please-manifest.json +1 -1
- package/.storybook/main.ts +7 -1
- package/CHANGELOG.md +25 -0
- package/lib/components/DataDictionary/components/Entities/constants.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entities/constants.js +6 -0
- package/lib/components/DataDictionary/components/Entities/entities.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entities/entities.js +7 -0
- package/lib/components/DataDictionary/components/Entities/types.d.ts +4 -0
- package/lib/components/DataDictionary/components/Entities/types.js +1 -0
- package/lib/components/DataDictionary/components/Entity/constants.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entity/constants.js +5 -0
- package/lib/components/DataDictionary/components/Entity/entity.d.ts +2 -0
- package/lib/components/DataDictionary/components/Entity/entity.js +14 -0
- package/lib/components/DataDictionary/components/Entity/types.d.ts +4 -0
- package/lib/components/DataDictionary/components/Entity/types.js +1 -0
- package/lib/components/DataDictionary/components/Table/columns/columnDef.d.ts +6 -0
- package/lib/components/DataDictionary/components/Table/columns/columnDef.js +33 -0
- package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.d.ts +5 -0
- package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.js +5 -0
- package/lib/components/DataDictionary/components/Table/columns/types.d.ts +2 -0
- package/lib/components/DataDictionary/components/Table/columns/types.js +1 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.d.ts +2 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.js +6 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/types.d.ts +4 -0
- package/lib/components/DataDictionary/components/Table/components/BasicCell/types.js +1 -0
- package/lib/components/DataDictionary/components/Table/hook.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/hook.js +11 -0
- package/lib/components/DataDictionary/components/Table/options/core/constants.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/options/core/constants.js +7 -0
- package/lib/components/DataDictionary/components/Table/options/hook.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/options/hook.js +8 -0
- package/lib/components/DataDictionary/components/Table/options/sorting/constants.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/options/sorting/constants.js +3 -0
- package/lib/components/DataDictionary/components/Table/table.d.ts +2 -0
- package/lib/components/DataDictionary/components/Table/table.js +17 -0
- package/lib/components/DataDictionary/components/Table/table.styles.d.ts +3 -0
- package/lib/components/DataDictionary/components/Table/table.styles.js +5 -0
- package/lib/components/DataDictionary/components/Table/types.d.ts +5 -0
- package/lib/components/DataDictionary/components/Table/types.js +1 -0
- package/lib/components/DataDictionary/dataDictionary.d.ts +2 -0
- package/lib/components/DataDictionary/dataDictionary.js +9 -0
- package/lib/components/DataDictionary/dataDictionary.styles.d.ts +1 -0
- package/lib/components/DataDictionary/dataDictionary.styles.js +7 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.d.ts +2 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.js +5 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/types.d.ts +4 -0
- package/lib/components/DataDictionary/hooks/UseDataDictionary/types.js +1 -0
- package/lib/components/Detail/detail.stories.d.ts +36 -5
- package/lib/components/Detail/detail.stories.js +27 -18
- package/lib/components/Export/components/ExportForm/components/ExportButton/exportButton.js +6 -1
- package/lib/components/Export/components/ExportMethod/exportMethod.stories.d.ts +22 -5
- package/lib/components/Export/components/ExportMethod/exportMethod.stories.js +9 -9
- package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.js +5 -2
- package/lib/components/Filter/components/Filter/filter.stories.d.ts +25 -5
- package/lib/components/Filter/components/Filter/filter.stories.js +25 -24
- package/lib/components/Filter/components/FilterLabel/filterLabel.stories.d.ts +31 -5
- package/lib/components/Filter/components/FilterLabel/filterLabel.stories.js +10 -8
- package/lib/components/Filter/components/FilterMenu/filterMenu.stories.d.ts +38 -5
- package/lib/components/Filter/components/FilterMenu/filterMenu.stories.js +107 -104
- package/lib/components/Filter/components/FilterTag/filterTag.stories.d.ts +16 -5
- package/lib/components/Filter/components/FilterTag/filterTag.stories.js +8 -7
- package/lib/components/Filter/components/FilterTags/filterTags.stories.d.ts +18 -5
- package/lib/components/Filter/components/FilterTags/filterTags.stories.js +40 -39
- package/lib/components/Index/components/AzulFileDownload/azulFileDownload.js +10 -5
- package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.d.ts +8 -5
- package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.js +9 -6
- package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.d.ts +13 -5
- package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.js +11 -11
- package/lib/components/Index/components/Hero/hero.stories.d.ts +23 -5
- package/lib/components/Index/components/Hero/hero.stories.js +8 -6
- package/lib/components/Index/components/NTagCell/nTagCell.stories.d.ts +16 -5
- package/lib/components/Index/components/NTagCell/nTagCell.stories.js +8 -8
- package/lib/components/Index/index.stories.js +2 -1
- package/lib/components/Layout/components/BackPage/backPageView.stories.d.ts +31 -5
- package/lib/components/Layout/components/BackPage/backPageView.stories.js +27 -18
- package/lib/components/Layout/components/Footer/footer.stories.d.ts +24 -3
- package/lib/components/Layout/components/Footer/footer.stories.js +4 -3
- package/lib/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenu/navigationMenu.js +1 -1
- package/lib/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenuItems/navigationMenuItems.js +20 -21
- package/lib/components/Layout/components/Header/components/Content/components/Navigation/constants.d.ts +1 -0
- package/lib/components/Layout/components/Header/components/Content/components/Navigation/constants.js +1 -0
- package/lib/components/Layout/components/Header/components/Content/components/Navigation/navigation.d.ts +2 -1
- package/lib/components/Layout/components/Header/components/Content/components/Navigation/navigation.js +16 -17
- package/lib/components/Layout/components/Header/header.js +2 -1
- package/lib/components/Layout/components/Header/header.stories.js +1 -1
- package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.d.ts +13 -5
- package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.js +6 -6
- package/lib/components/Layout/components/Sidebar/sidebar.stories.js +2 -0
- package/lib/components/Links/links.stories.d.ts +13 -5
- package/lib/components/Links/links.stories.js +14 -14
- package/lib/components/Loading/loading.stories.d.ts +34 -5
- package/lib/components/Loading/loading.stories.js +8 -6
- package/lib/components/Login/components/Button/types.d.ts +1 -1
- package/lib/components/Login/components/Buttons/buttons.d.ts +2 -0
- package/lib/components/Login/components/Buttons/buttons.js +5 -0
- package/lib/components/Login/components/Buttons/types.d.ts +8 -0
- package/lib/components/Login/components/Buttons/types.js +1 -0
- package/lib/components/Login/components/Section/components/Consent/consent.d.ts +3 -0
- package/lib/components/Login/components/Section/components/Consent/consent.js +14 -0
- package/lib/components/Login/components/Section/components/Consent/consent.styles.d.ts +7 -0
- package/lib/components/Login/components/Section/components/Consent/consent.styles.js +14 -0
- package/lib/components/Login/components/Section/components/Consent/types.d.ts +6 -0
- package/lib/components/Login/components/Section/components/Consent/types.js +1 -0
- package/lib/components/Login/components/Section/components/Warning/warning.d.ts +3 -0
- package/lib/components/Login/components/Section/components/Warning/warning.js +9 -0
- package/lib/components/Login/hooks/useUserConsent/types.d.ts +10 -0
- package/lib/components/Login/hooks/useUserConsent/types.js +1 -0
- package/lib/components/Login/hooks/useUserConsent/useUserConsent.d.ts +2 -0
- package/lib/components/Login/hooks/useUserConsent/useUserConsent.js +24 -0
- package/lib/components/Login/hooks/useUserLogin/types.d.ts +6 -0
- package/lib/components/Login/hooks/useUserLogin/types.js +1 -0
- package/lib/components/Login/hooks/useUserLogin/useUserLogin.d.ts +2 -0
- package/lib/components/Login/hooks/useUserLogin/useUserLogin.js +21 -0
- package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.d.ts +13 -5
- package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.js +20 -20
- package/lib/components/Project/components/Contacts/contacts.stories.d.ts +13 -5
- package/lib/components/Project/components/Contacts/contacts.stories.js +18 -18
- package/lib/components/Project/components/Contributors/contributors.stories.d.ts +8 -5
- package/lib/components/Project/components/Contributors/contributors.stories.js +27 -27
- package/lib/components/Project/components/DataCurators/dataCurators.stories.d.ts +13 -5
- package/lib/components/Project/components/DataCurators/dataCurators.stories.js +7 -7
- package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.d.ts +8 -5
- package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.js +3 -4
- package/lib/components/Project/components/Description/description.stories.d.ts +8 -5
- package/lib/components/Project/components/Description/description.stories.js +6 -6
- package/lib/components/Project/components/Details/details.stories.d.ts +16 -5
- package/lib/components/Project/components/Details/details.stories.js +7 -7
- package/lib/components/Project/components/Publications/publications.stories.d.ts +8 -5
- package/lib/components/Project/components/Publications/publications.stories.js +17 -17
- package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.d.ts +8 -5
- package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.js +18 -18
- package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.d.ts +16 -33
- package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.js +10 -9
- package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.js +26 -14
- package/lib/components/Support/components/ViewSupport/types.d.ts +6 -0
- package/lib/components/Support/components/ViewSupport/types.js +1 -0
- package/lib/components/Support/components/ViewSupport/viewSupport.d.ts +2 -9
- package/lib/components/Support/components/ViewSupport/viewSupport.js +7 -3
- package/lib/components/Table/components/Pagination/pagination.stories.d.ts +28 -5
- package/lib/components/Table/components/Pagination/pagination.stories.js +11 -7
- package/lib/components/common/Accordion/accordion.stories.d.ts +6 -3
- package/lib/components/common/Accordion/accordion.stories.js +2 -1
- package/lib/components/common/Breadcrumbs/breadcrumbs.stories.d.ts +10 -7
- package/lib/components/common/Breadcrumbs/breadcrumbs.stories.js +42 -43
- package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.d.ts +9 -6
- package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.js +13 -15
- package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.d.ts +19 -2
- package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.js +2 -2
- package/lib/components/common/Card/card.stories.d.ts +6 -3
- package/lib/components/common/Card/card.stories.js +2 -1
- package/lib/components/common/Code/code.stories.d.ts +5 -3
- package/lib/components/common/CopyToClipboard/copyToClipboard.stories.d.ts +11 -3
- package/lib/components/common/CopyToClipboard/copyToClipboard.stories.js +2 -1
- package/lib/components/common/CustomIcon/components/CloseIcon/closeIcon.d.ts +2 -0
- package/lib/components/common/CustomIcon/components/CloseIcon/closeIcon.js +6 -0
- package/lib/components/common/LoginDialog/constants.d.ts +6 -0
- package/lib/components/common/LoginDialog/constants.js +21 -0
- package/lib/components/common/LoginDialog/loginDialog.d.ts +2 -0
- package/lib/components/common/LoginDialog/loginDialog.js +27 -0
- package/lib/components/common/LoginDialog/loginDialog.styles.d.ts +3 -0
- package/lib/components/common/LoginDialog/loginDialog.styles.js +50 -0
- package/lib/components/common/LoginDialog/types.d.ts +4 -0
- package/lib/components/common/LoginDialog/types.js +1 -0
- package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.d.ts +13 -5
- package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.js +6 -6
- package/lib/components/common/Socials/socials.stories.d.ts +11 -3
- package/lib/components/common/Socials/socials.stories.js +2 -1
- package/lib/components/common/StaticImage/staticImage.stories.d.ts +22 -5
- package/lib/components/common/StaticImage/staticImage.stories.js +8 -8
- package/lib/components/common/StatusIcon/statusIcon.stories.d.ts +19 -5
- package/lib/components/common/StatusIcon/statusIcon.stories.js +7 -7
- package/lib/components/common/Tag/tag.stories.d.ts +15 -5
- package/lib/components/common/Tag/tag.stories.js +7 -5
- package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.d.ts +18 -5
- package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.js +19 -19
- package/lib/config/entities.d.ts +1 -0
- package/lib/providers/loginGuard/common/types.d.ts +18 -0
- package/lib/providers/loginGuard/common/types.js +1 -0
- package/lib/providers/loginGuard/context.d.ts +6 -0
- package/lib/providers/loginGuard/context.js +10 -0
- package/lib/providers/loginGuard/hook.d.ts +9 -0
- package/lib/providers/loginGuard/hook.js +12 -0
- package/lib/providers/loginGuard/provider.d.ts +11 -0
- package/lib/providers/loginGuard/provider.js +55 -0
- package/lib/styles/common/mui/typography.d.ts +1 -0
- package/lib/styles/common/mui/typography.js +8 -0
- package/lib/views/DataDictionaryView/dataDictionaryView.d.ts +2 -0
- package/lib/views/DataDictionaryView/dataDictionaryView.js +5 -0
- package/package.json +13 -13
- package/src/components/DataDictionary/components/Entities/constants.ts +8 -0
- package/src/components/DataDictionary/components/Entities/entities.tsx +15 -0
- package/src/components/DataDictionary/components/Entities/types.ts +5 -0
- package/src/components/DataDictionary/components/Entity/constants.ts +7 -0
- package/src/components/DataDictionary/components/Entity/entity.tsx +28 -0
- package/src/components/DataDictionary/components/Entity/types.ts +5 -0
- package/src/components/DataDictionary/components/Table/columns/columnDef.ts +47 -0
- package/src/components/DataDictionary/components/Table/columns/columnIdentifier.ts +5 -0
- package/src/components/DataDictionary/components/Table/columns/types.ts +3 -0
- package/src/components/DataDictionary/components/Table/components/BasicCell/basicCell.tsx +8 -0
- package/src/components/DataDictionary/components/Table/components/BasicCell/types.ts +5 -0
- package/src/components/DataDictionary/components/Table/hook.ts +13 -0
- package/src/components/DataDictionary/components/Table/options/core/constants.ts +12 -0
- package/src/components/DataDictionary/components/Table/options/hook.ts +14 -0
- package/src/components/DataDictionary/components/Table/options/sorting/constants.ts +9 -0
- package/src/components/DataDictionary/components/Table/table.styles.ts +6 -0
- package/src/components/DataDictionary/components/Table/table.tsx +35 -0
- package/src/components/DataDictionary/components/Table/types.ts +6 -0
- package/src/components/DataDictionary/dataDictionary.styles.ts +8 -0
- package/src/components/DataDictionary/dataDictionary.tsx +16 -0
- package/src/components/DataDictionary/hooks/UseDataDictionary/hook.ts +9 -0
- package/src/components/DataDictionary/hooks/UseDataDictionary/types.ts +5 -0
- package/src/components/Detail/detail.stories.tsx +41 -36
- package/src/components/Export/components/ExportForm/components/ExportButton/exportButton.tsx +8 -1
- package/src/components/Export/components/ExportMethod/exportMethod.stories.tsx +13 -13
- package/src/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.tsx +11 -3
- package/src/components/Filter/components/Filter/filter.stories.tsx +29 -28
- package/src/components/Filter/components/FilterLabel/filterLabel.stories.tsx +14 -12
- package/src/components/Filter/components/FilterMenu/filterMenu.stories.tsx +111 -108
- package/src/components/Filter/components/FilterTag/filterTag.stories.tsx +12 -11
- package/src/components/Filter/components/FilterTags/filterTags.stories.tsx +44 -43
- package/src/components/Index/components/AzulFileDownload/azulFileDownload.stories.tsx +13 -10
- package/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx +12 -5
- package/src/components/Index/components/Hero/components/Summaries/summaries.stories.tsx +15 -15
- package/src/components/Index/components/Hero/hero.stories.tsx +12 -8
- package/src/components/Index/components/NTagCell/nTagCell.stories.tsx +12 -12
- package/src/components/Index/index.stories.tsx +2 -1
- package/src/components/Layout/components/BackPage/backPageView.stories.tsx +42 -36
- package/src/components/Layout/components/Footer/footer.stories.tsx +6 -4
- package/src/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenu/navigationMenu.tsx +1 -1
- package/src/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenuItems/navigationMenuItems.tsx +16 -15
- package/src/components/Layout/components/Header/components/Content/components/Navigation/constants.ts +1 -0
- package/src/components/Layout/components/Header/components/Content/components/Navigation/navigation.tsx +26 -18
- package/src/components/Layout/components/Header/header.stories.tsx +1 -1
- package/src/components/Layout/components/Header/header.tsx +6 -1
- package/src/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.tsx +10 -10
- package/src/components/Layout/components/Sidebar/sidebar.stories.tsx +2 -0
- package/src/components/Links/links.stories.tsx +18 -18
- package/src/components/Loading/loading.stories.tsx +12 -10
- package/src/components/Login/components/Button/types.ts +1 -1
- package/src/components/Login/components/Buttons/buttons.tsx +22 -0
- package/src/components/Login/components/Buttons/types.ts +9 -0
- package/src/components/Login/components/Section/components/Consent/consent.styles.ts +15 -0
- package/src/components/Login/components/Section/components/Consent/consent.tsx +30 -0
- package/src/components/Login/components/Section/components/Consent/types.ts +10 -0
- package/src/components/Login/components/Section/components/Warning/warning.tsx +24 -0
- package/src/components/Login/hooks/useUserConsent/types.ts +11 -0
- package/src/components/Login/hooks/useUserConsent/useUserConsent.ts +32 -0
- package/src/components/Login/hooks/useUserLogin/types.ts +8 -0
- package/src/components/Login/hooks/useUserLogin/useUserLogin.ts +29 -0
- package/src/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.tsx +24 -25
- package/src/components/Project/components/Contacts/contacts.stories.tsx +22 -22
- package/src/components/Project/components/Contributors/contributors.stories.tsx +31 -31
- package/src/components/Project/components/DataCurators/dataCurators.stories.tsx +11 -11
- package/src/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.tsx +7 -8
- package/src/components/Project/components/Description/description.stories.tsx +11 -11
- package/src/components/Project/components/Details/details.stories.tsx +11 -11
- package/src/components/Project/components/Publications/publications.stories.tsx +23 -23
- package/src/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.tsx +22 -22
- package/src/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.ts +10 -9
- package/src/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.tsx +44 -15
- package/src/components/Support/components/ViewSupport/types.ts +9 -0
- package/src/components/Support/components/ViewSupport/viewSupport.tsx +6 -10
- package/src/components/Table/components/Pagination/pagination.stories.tsx +15 -11
- package/src/components/common/Accordion/accordion.stories.tsx +4 -2
- package/src/components/common/Breadcrumbs/breadcrumbs.stories.tsx +46 -47
- package/src/components/common/Button/components/CallToActionButton/callToActionButton.stories.tsx +17 -20
- package/src/components/common/Button/components/HelpIconButton/helpIconButton.stories.tsx +4 -4
- package/src/components/common/Card/card.stories.tsx +4 -2
- package/src/components/common/Code/code.stories.tsx +1 -1
- package/src/components/common/CopyToClipboard/copyToClipboard.stories.tsx +4 -2
- package/src/components/common/CustomIcon/components/CloseIcon/closeIcon.tsx +17 -0
- package/src/components/common/LoginDialog/constants.ts +33 -0
- package/src/components/common/LoginDialog/loginDialog.styles.ts +51 -0
- package/src/components/common/LoginDialog/loginDialog.tsx +56 -0
- package/src/components/common/LoginDialog/types.ts +4 -0
- package/src/components/common/Section/components/SectionTitle/sectionTitle.stories.tsx +10 -10
- package/src/components/common/Socials/socials.stories.tsx +4 -2
- package/src/components/common/StaticImage/staticImage.stories.tsx +12 -12
- package/src/components/common/StatusIcon/statusIcon.stories.tsx +11 -11
- package/src/components/common/Tag/tag.stories.tsx +11 -9
- package/src/components/common/ToggleButtonGroup/toggleButtonGroup.stories.tsx +23 -23
- package/src/config/entities.ts +1 -0
- package/src/providers/loginGuard/common/types.ts +21 -0
- package/src/providers/loginGuard/context.ts +12 -0
- package/src/providers/loginGuard/hook.ts +14 -0
- package/src/providers/loginGuard/provider.tsx +76 -0
- package/src/styles/common/mui/typography.ts +9 -0
- package/src/views/DataDictionaryView/dataDictionaryView.tsx +9 -0
- package/tests/provider.test.tsx +191 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createContext } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* LoginGuardContext provides a way to trigger a login process. Default value is to
|
|
4
|
+
* call the callback immediately, if specified.
|
|
5
|
+
*/
|
|
6
|
+
export const LoginGuardContext = createContext({
|
|
7
|
+
requireLogin: (callback) => {
|
|
8
|
+
callback?.();
|
|
9
|
+
},
|
|
10
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LoginGuardContextProps } from "./common/types";
|
|
2
|
+
/**
|
|
3
|
+
* Custom hook to access the LoginGuard context. This hook returns an object
|
|
4
|
+
* containing the "requireLogin" function, which allows triggering the application's
|
|
5
|
+
* login process.
|
|
6
|
+
*
|
|
7
|
+
* @returns The current LoginGuard context value.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useLoginGuard(): LoginGuardContextProps;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useContext } from "react";
|
|
2
|
+
import { LoginGuardContext } from "./context";
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook to access the LoginGuard context. This hook returns an object
|
|
5
|
+
* containing the "requireLogin" function, which allows triggering the application's
|
|
6
|
+
* login process.
|
|
7
|
+
*
|
|
8
|
+
* @returns The current LoginGuard context value.
|
|
9
|
+
*/
|
|
10
|
+
export function useLoginGuard() {
|
|
11
|
+
return useContext(LoginGuardContext);
|
|
12
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LoginGuardProviderProps } from "./common/types";
|
|
2
|
+
/**
|
|
3
|
+
* LoginGuardProvider is responsible for intercepting actions that require user authentication.
|
|
4
|
+
* It provides a "requireLogin" function via context. When a protected action is triggered while the
|
|
5
|
+
* user is unauthenticated, the LoginDialog is displayed. Upon successful authentication, the saved
|
|
6
|
+
* callback is invoked.
|
|
7
|
+
*
|
|
8
|
+
* @param {LoginGuardProviderProps} props - The provider props that include children.
|
|
9
|
+
* @returns The provider component.
|
|
10
|
+
*/
|
|
11
|
+
export declare function LoginGuardProvider({ children, }: LoginGuardProviderProps): JSX.Element;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { LoginDialog } from "../../components/common/LoginDialog/loginDialog";
|
|
3
|
+
import { useAuthenticationConfig } from "../../hooks/authentication/config/useAuthenticationConfig";
|
|
4
|
+
import { useConfig } from "../../hooks/useConfig";
|
|
5
|
+
import { useAuth } from "../authentication/auth/hook";
|
|
6
|
+
import { LoginGuardContext } from "./context";
|
|
7
|
+
/**
|
|
8
|
+
* LoginGuardProvider is responsible for intercepting actions that require user authentication.
|
|
9
|
+
* It provides a "requireLogin" function via context. When a protected action is triggered while the
|
|
10
|
+
* user is unauthenticated, the LoginDialog is displayed. Upon successful authentication, the saved
|
|
11
|
+
* callback is invoked.
|
|
12
|
+
*
|
|
13
|
+
* @param {LoginGuardProviderProps} props - The provider props that include children.
|
|
14
|
+
* @returns The provider component.
|
|
15
|
+
*/
|
|
16
|
+
export function LoginGuardProvider({ children, }) {
|
|
17
|
+
// Dialog open state.
|
|
18
|
+
const [open, setOpen] = useState(false);
|
|
19
|
+
// Use ref to store the callback without triggering re-render.
|
|
20
|
+
const callbackRef = useRef(undefined);
|
|
21
|
+
// Determine if authentication is enabled.
|
|
22
|
+
const authConfig = useAuthenticationConfig();
|
|
23
|
+
// Determine if authentication is required for downloads and exports.
|
|
24
|
+
const { config: { exportsRequireAuth }, } = useConfig();
|
|
25
|
+
// Get the user's authenticated state.
|
|
26
|
+
const { authState: { isAuthenticated }, } = useAuth();
|
|
27
|
+
// If the user authenticates, close dialog then fire and clear callback.
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (isAuthenticated) {
|
|
30
|
+
setOpen(false);
|
|
31
|
+
callbackRef.current?.();
|
|
32
|
+
// Clear callback after firing.
|
|
33
|
+
callbackRef.current = undefined;
|
|
34
|
+
}
|
|
35
|
+
}, [isAuthenticated]);
|
|
36
|
+
// Handler to close the dialog.
|
|
37
|
+
const onClose = useCallback(() => {
|
|
38
|
+
setOpen(false);
|
|
39
|
+
// Clear any stored callback.
|
|
40
|
+
callbackRef.current = undefined;
|
|
41
|
+
}, []);
|
|
42
|
+
// Block actions that require authentication, or fire callback if already authenticated.
|
|
43
|
+
const requireLogin = useCallback((cb) => {
|
|
44
|
+
if (authConfig && exportsRequireAuth && !isAuthenticated) {
|
|
45
|
+
callbackRef.current = cb;
|
|
46
|
+
setOpen(true);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
cb?.();
|
|
50
|
+
}
|
|
51
|
+
}, [authConfig, exportsRequireAuth, isAuthenticated]);
|
|
52
|
+
return (React.createElement(LoginGuardContext.Provider, { value: { requireLogin } },
|
|
53
|
+
children,
|
|
54
|
+
React.createElement(LoginDialog, { open: open, onClose: onClose })));
|
|
55
|
+
}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
export const COLOR = {
|
|
2
|
+
INHERIT: "inherit",
|
|
3
|
+
INK_LIGHT: "ink.light",
|
|
4
|
+
INK_MAIN: "ink.main",
|
|
5
|
+
};
|
|
1
6
|
export const VARIANT = {
|
|
2
7
|
INHERIT: "inherit",
|
|
8
|
+
TEXT_BODY_400: "text-body-400",
|
|
9
|
+
TEXT_BODY_400_2_LINES: "text-body-400-2lines",
|
|
10
|
+
TEXT_HEADING_SMALL: "text-heading-small",
|
|
3
11
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@databiosphere/findable-ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.0.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
@@ -26,15 +26,15 @@
|
|
|
26
26
|
"@commitlint/config-conventional": "^17.4.2",
|
|
27
27
|
"@mui/types": "^7.2.18",
|
|
28
28
|
"@next/eslint-plugin-next": "^14.1.0",
|
|
29
|
-
"@storybook/addon-actions": "^
|
|
30
|
-
"@storybook/addon-essentials": "^
|
|
31
|
-
"@storybook/addon-interactions": "^
|
|
32
|
-
"@storybook/addon-links": "^
|
|
33
|
-
"@storybook/addon-mdx-gfm": "^
|
|
34
|
-
"@storybook/nextjs": "^
|
|
35
|
-
"@storybook/react": "^
|
|
36
|
-
"@storybook/
|
|
37
|
-
"@storybook/types": "^
|
|
29
|
+
"@storybook/addon-actions": "^8.6.4",
|
|
30
|
+
"@storybook/addon-essentials": "^8.6.4",
|
|
31
|
+
"@storybook/addon-interactions": "^8.6.4",
|
|
32
|
+
"@storybook/addon-links": "^8.6.4",
|
|
33
|
+
"@storybook/addon-mdx-gfm": "^8.6.4",
|
|
34
|
+
"@storybook/nextjs": "^8.6.4",
|
|
35
|
+
"@storybook/react": "^8.6.4",
|
|
36
|
+
"@storybook/test": "^8.6.4",
|
|
37
|
+
"@storybook/types": "^8.6.4",
|
|
38
38
|
"@testing-library/react": "^16.0.1",
|
|
39
39
|
"@types/jest": "^29.4.0",
|
|
40
40
|
"@types/react": "^18.3.5",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"jest-fetch-mock": "^3.0.3",
|
|
61
61
|
"prettier": "^2.8.3",
|
|
62
62
|
"prettier-plugin-organize-imports": "^3.2.2",
|
|
63
|
-
"storybook": "^
|
|
63
|
+
"storybook": "^8.6.4",
|
|
64
64
|
"ts-jest": "^29.2.5",
|
|
65
65
|
"typescript": "^5.5.4"
|
|
66
66
|
},
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"@tanstack/react-table": "^8.19.2",
|
|
73
73
|
"@tanstack/react-virtual": "^3.0.0-beta.59",
|
|
74
74
|
"copy-to-clipboard": "3.3.1",
|
|
75
|
-
"isomorphic-dompurify": "
|
|
75
|
+
"isomorphic-dompurify": "^2.22.0",
|
|
76
76
|
"ky": "^1.7.2",
|
|
77
77
|
"next": "^14.1.0",
|
|
78
78
|
"next-auth": "^4.24.7",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"react-idle-timer": "^5.7.2",
|
|
84
84
|
"react-window": "1.8.9",
|
|
85
85
|
"uuid": "8.3.2",
|
|
86
|
-
"
|
|
86
|
+
"yup": "^1.6.1"
|
|
87
87
|
},
|
|
88
88
|
"engines": {
|
|
89
89
|
"node": "20.10.0"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Grid2 } from "@mui/material";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Entity } from "../Entity/entity";
|
|
4
|
+
import { GRID2_PROPS } from "./constants";
|
|
5
|
+
import { ClassesProps } from "./types";
|
|
6
|
+
|
|
7
|
+
export const Entities = ({ classes }: ClassesProps): JSX.Element => {
|
|
8
|
+
return (
|
|
9
|
+
<Grid2 {...GRID2_PROPS}>
|
|
10
|
+
{classes.map((classData) => (
|
|
11
|
+
<Entity key={classData.key} class={classData} />
|
|
12
|
+
))}
|
|
13
|
+
</Grid2>
|
|
14
|
+
);
|
|
15
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Grid2, Typography } from "@mui/material";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { COLOR, VARIANT } from "../../../../styles/common/mui/typography";
|
|
4
|
+
import { useTable } from "../Table/hook";
|
|
5
|
+
import { Table } from "../Table/table";
|
|
6
|
+
import { GRID2_PROPS } from "./constants";
|
|
7
|
+
import { EntityProps } from "./types";
|
|
8
|
+
|
|
9
|
+
export const Entity = ({ class: classData }: EntityProps): JSX.Element => {
|
|
10
|
+
const table = useTable(classData.attributes);
|
|
11
|
+
return (
|
|
12
|
+
<Grid2 {...GRID2_PROPS} rowGap={4}>
|
|
13
|
+
<Grid2 {...GRID2_PROPS} rowGap={1}>
|
|
14
|
+
<Typography component="h3" variant={VARIANT.TEXT_HEADING_SMALL}>
|
|
15
|
+
{classData.label}
|
|
16
|
+
</Typography>
|
|
17
|
+
<Typography
|
|
18
|
+
color={COLOR.INK_LIGHT}
|
|
19
|
+
component="div"
|
|
20
|
+
variant={VARIANT.TEXT_BODY_400_2_LINES}
|
|
21
|
+
>
|
|
22
|
+
{classData.description}
|
|
23
|
+
</Typography>
|
|
24
|
+
</Grid2>
|
|
25
|
+
<Table table={table} />
|
|
26
|
+
</Grid2>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { CellContext, ColumnDef } from "@tanstack/react-table";
|
|
2
|
+
import { Attribute } from "../../../../../common/entities";
|
|
3
|
+
import { BasicCell } from "../components/BasicCell/basicCell";
|
|
4
|
+
import { COLUMN_IDENTIFIER } from "./columnIdentifier";
|
|
5
|
+
import { AttributeValue } from "./types";
|
|
6
|
+
|
|
7
|
+
const COLUMN_DEF_DESCRIPTION: ColumnDef<Attribute, AttributeValue> = {
|
|
8
|
+
accessorFn: (row) => row.description,
|
|
9
|
+
cell: (props: CellContext<Attribute, AttributeValue>) =>
|
|
10
|
+
BasicCell({ ...props }),
|
|
11
|
+
header: "Description",
|
|
12
|
+
id: COLUMN_IDENTIFIER.DESCRIPTION,
|
|
13
|
+
meta: { width: { max: "2fr", min: "480px" } },
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const COLUMN_DEF_KEY: ColumnDef<Attribute, AttributeValue> = {
|
|
17
|
+
accessorFn: (row) => row.key,
|
|
18
|
+
cell: (props: CellContext<Attribute, AttributeValue>) =>
|
|
19
|
+
BasicCell({ ...props }),
|
|
20
|
+
header: "Key",
|
|
21
|
+
id: COLUMN_IDENTIFIER.KEY,
|
|
22
|
+
meta: { width: { max: "1fr", min: "180px" } },
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const COLUMN_DEF_LABEL: ColumnDef<Attribute, AttributeValue> = {
|
|
26
|
+
accessorFn: (row) => row.label,
|
|
27
|
+
cell: (props: CellContext<Attribute, AttributeValue>) =>
|
|
28
|
+
BasicCell({ ...props }),
|
|
29
|
+
header: "Label",
|
|
30
|
+
id: COLUMN_IDENTIFIER.LABEL,
|
|
31
|
+
meta: { width: { max: "1fr", min: "200px" } },
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const COLUMN_DEF: Record<
|
|
35
|
+
keyof typeof COLUMN_IDENTIFIER,
|
|
36
|
+
ColumnDef<Attribute, AttributeValue>
|
|
37
|
+
> = {
|
|
38
|
+
DESCRIPTION: COLUMN_DEF_DESCRIPTION,
|
|
39
|
+
KEY: COLUMN_DEF_KEY,
|
|
40
|
+
LABEL: COLUMN_DEF_LABEL,
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const COLUMN_DEFS: ColumnDef<Attribute, AttributeValue>[] = [
|
|
44
|
+
COLUMN_DEF.LABEL,
|
|
45
|
+
COLUMN_DEF.KEY,
|
|
46
|
+
COLUMN_DEF.DESCRIPTION,
|
|
47
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Typography } from "@mui/material";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { VARIANT } from "../../../../../../styles/common/mui/typography";
|
|
4
|
+
import { BasicCellProps } from "./types";
|
|
5
|
+
|
|
6
|
+
export const BasicCell = ({ getValue }: BasicCellProps): JSX.Element => {
|
|
7
|
+
return <Typography variant={VARIANT.INHERIT}>{getValue()}</Typography>;
|
|
8
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Table, useReactTable } from "@tanstack/react-table";
|
|
2
|
+
import { Attribute } from "../../../../common/entities";
|
|
3
|
+
import { COLUMN_DEFS } from "./columns/columnDef";
|
|
4
|
+
import { useTableOptions } from "./options/hook";
|
|
5
|
+
|
|
6
|
+
export const useTable = (data: Attribute[]): Table<Attribute> => {
|
|
7
|
+
const tableOptions = useTableOptions();
|
|
8
|
+
return useReactTable<Attribute>({
|
|
9
|
+
...tableOptions,
|
|
10
|
+
columns: COLUMN_DEFS,
|
|
11
|
+
data,
|
|
12
|
+
});
|
|
13
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CoreOptions, getCoreRowModel } from "@tanstack/react-table";
|
|
2
|
+
import { Attribute } from "../../../../../../common/entities";
|
|
3
|
+
import { ROW_POSITION } from "../../../../../Table/features/RowPosition/constants";
|
|
4
|
+
import { ROW_PREVIEW } from "../../../../../Table/features/RowPreview/constants";
|
|
5
|
+
|
|
6
|
+
export const CORE_OPTIONS: Pick<
|
|
7
|
+
CoreOptions<Attribute>,
|
|
8
|
+
"_features" | "getCoreRowModel"
|
|
9
|
+
> = {
|
|
10
|
+
_features: [ROW_POSITION, ROW_PREVIEW],
|
|
11
|
+
getCoreRowModel: getCoreRowModel(),
|
|
12
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TableOptions } from "@tanstack/react-table";
|
|
2
|
+
import { Attribute } from "../../../../../common/entities";
|
|
3
|
+
import { CORE_OPTIONS } from "./core/constants";
|
|
4
|
+
import { SORTING_OPTIONS } from "./sorting/constants";
|
|
5
|
+
|
|
6
|
+
export const useTableOptions = (): Omit<
|
|
7
|
+
TableOptions<Attribute>,
|
|
8
|
+
"columns" | "data"
|
|
9
|
+
> => {
|
|
10
|
+
return {
|
|
11
|
+
...CORE_OPTIONS,
|
|
12
|
+
...SORTING_OPTIONS,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TableContainer } from "@mui/material";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { TableBody } from "../../../Detail/components/Table/components/TableBody/tableBody";
|
|
4
|
+
import { ROW_DIRECTION } from "../../../Table/common/entities";
|
|
5
|
+
import { TableHead } from "../../../Table/components/TableHead/tableHead";
|
|
6
|
+
import { GridTable } from "../../../Table/table.styles";
|
|
7
|
+
import { getColumnTrackSizing } from "../../../TableCreator/options/columnTrackSizing/utils";
|
|
8
|
+
import { GridPaper } from "../../../common/Paper/paper.styles";
|
|
9
|
+
import { StyledRoundedPaper } from "./table.styles";
|
|
10
|
+
import { TableProps } from "./types";
|
|
11
|
+
|
|
12
|
+
export const Table = ({ table }: TableProps): JSX.Element => {
|
|
13
|
+
return (
|
|
14
|
+
<StyledRoundedPaper variant="table">
|
|
15
|
+
<GridPaper>
|
|
16
|
+
<TableContainer>
|
|
17
|
+
<GridTable
|
|
18
|
+
gridTemplateColumns={getColumnTrackSizing(
|
|
19
|
+
table.getVisibleFlatColumns()
|
|
20
|
+
)}
|
|
21
|
+
>
|
|
22
|
+
<TableHead
|
|
23
|
+
rowDirection={ROW_DIRECTION.DEFAULT}
|
|
24
|
+
tableInstance={table}
|
|
25
|
+
/>
|
|
26
|
+
<TableBody
|
|
27
|
+
rowDirection={ROW_DIRECTION.DEFAULT}
|
|
28
|
+
tableInstance={table}
|
|
29
|
+
/>
|
|
30
|
+
</GridTable>
|
|
31
|
+
</TableContainer>
|
|
32
|
+
</GridPaper>
|
|
33
|
+
</StyledRoundedPaper>
|
|
34
|
+
);
|
|
35
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { BaseComponentProps } from "../types";
|
|
3
|
+
import { Entities } from "./components/Entities/entities";
|
|
4
|
+
import { View } from "./dataDictionary.styles";
|
|
5
|
+
import { useDataDictionary } from "./hooks/UseDataDictionary/hook";
|
|
6
|
+
|
|
7
|
+
export const DataDictionary = ({
|
|
8
|
+
className,
|
|
9
|
+
}: BaseComponentProps): JSX.Element => {
|
|
10
|
+
const { classes } = useDataDictionary();
|
|
11
|
+
return (
|
|
12
|
+
<View className={className}>
|
|
13
|
+
<Entities classes={classes} />
|
|
14
|
+
</View>
|
|
15
|
+
);
|
|
16
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useConfig } from "../../../../hooks/useConfig";
|
|
2
|
+
import { UseDataDictionary } from "./types";
|
|
3
|
+
|
|
4
|
+
export const useDataDictionary = (): UseDataDictionary => {
|
|
5
|
+
const {
|
|
6
|
+
config: { dataDictionary: { classes = [] } = {} },
|
|
7
|
+
} = useConfig();
|
|
8
|
+
return { classes };
|
|
9
|
+
};
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
2
|
import React from "react";
|
|
3
|
+
import { CollaboratingOrganizations } from "../Project/components/CollaboratingOrganizations/collaboratingOrganizations";
|
|
3
4
|
import { CollaboratingOrganizationsStory } from "../Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories";
|
|
5
|
+
import { Contacts } from "../Project/components/Contacts/contacts";
|
|
4
6
|
import { ContactsStory } from "../Project/components/Contacts/contacts.stories";
|
|
7
|
+
import { Contributors } from "../Project/components/Contributors/contributors";
|
|
5
8
|
import { ContributorsStory } from "../Project/components/Contributors/contributors.stories";
|
|
9
|
+
import { DataCurators } from "../Project/components/DataCurators/dataCurators";
|
|
6
10
|
import { DataCuratorsStory } from "../Project/components/DataCurators/dataCurators.stories";
|
|
7
|
-
import {
|
|
11
|
+
import { DataReleasePolicy } from "../Project/components/DataReleasePolicy/dataReleasePolicy";
|
|
12
|
+
import { Description } from "../Project/components/Description/description";
|
|
8
13
|
import { DescriptionStory } from "../Project/components/Description/description.stories";
|
|
14
|
+
import { Details } from "../Project/components/Details/details";
|
|
9
15
|
import { DetailsStory } from "../Project/components/Details/details.stories";
|
|
16
|
+
import { Publications } from "../Project/components/Publications/publications";
|
|
10
17
|
import { PublicationsStory } from "../Project/components/Publications/publications.stories";
|
|
18
|
+
import { SupplementaryLinks } from "../Project/components/SupplementaryLinks/supplementaryLinks";
|
|
11
19
|
import { SupplementaryLinksStory } from "../Project/components/SupplementaryLinks/supplementaryLinks.stories";
|
|
12
20
|
import { Detail } from "./detail";
|
|
13
21
|
|
|
14
|
-
|
|
22
|
+
const meta = {
|
|
15
23
|
argTypes: {
|
|
16
24
|
Tabs: { table: { disable: true } },
|
|
17
25
|
isDetailOverview: { control: "boolean" },
|
|
@@ -24,39 +32,36 @@ export default {
|
|
|
24
32
|
layout: "fullscreen",
|
|
25
33
|
},
|
|
26
34
|
title: "Views/EntityDetailView",
|
|
27
|
-
}
|
|
35
|
+
} satisfies Meta<typeof Detail>;
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
<Detail {...args} />
|
|
31
|
-
);
|
|
37
|
+
export default meta;
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{...
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
top: <></>,
|
|
39
|
+
type Story = StoryObj<typeof meta>;
|
|
40
|
+
|
|
41
|
+
export const DetailStory: Story = {
|
|
42
|
+
args: {
|
|
43
|
+
isDetailOverview: true,
|
|
44
|
+
mainColumn: (
|
|
45
|
+
<>
|
|
46
|
+
<Description
|
|
47
|
+
projectDescription={
|
|
48
|
+
DescriptionStory.args.projectDescription || "None"
|
|
49
|
+
}
|
|
50
|
+
/>
|
|
51
|
+
<Contacts {...ContactsStory.args} />
|
|
52
|
+
<Publications {...PublicationsStory.args} />
|
|
53
|
+
<Contributors {...ContributorsStory.args} />
|
|
54
|
+
<CollaboratingOrganizations {...CollaboratingOrganizationsStory.args} />
|
|
55
|
+
<DataCurators {...DataCuratorsStory.args} />
|
|
56
|
+
<SupplementaryLinks {...SupplementaryLinksStory.args} />
|
|
57
|
+
<DataReleasePolicy />
|
|
58
|
+
</>
|
|
59
|
+
),
|
|
60
|
+
sideColumn: (
|
|
61
|
+
<>
|
|
62
|
+
<Details {...DetailsStory.args} />
|
|
63
|
+
</>
|
|
64
|
+
),
|
|
65
|
+
top: <></>,
|
|
66
|
+
},
|
|
62
67
|
};
|
package/src/components/Export/components/ExportForm/components/ExportButton/exportButton.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import { Tooltip } from "@mui/material";
|
|
|
2
2
|
import React, { ElementType, ReactNode } from "react";
|
|
3
3
|
import { useDownloadStatus } from "../../../../../../hooks/useDownloadStatus";
|
|
4
4
|
import { useFileManifestState } from "../../../../../../hooks/useFileManifestState";
|
|
5
|
+
import { useLoginGuard } from "../../../../../../providers/loginGuard/hook";
|
|
5
6
|
import { ButtonPrimary } from "../../../../../common/Button/components/ButtonPrimary/buttonPrimary";
|
|
6
7
|
|
|
7
8
|
export interface ExportButtonProps {
|
|
@@ -19,6 +20,10 @@ export const ExportButton = ({
|
|
|
19
20
|
const {
|
|
20
21
|
fileManifestState: { isLoading },
|
|
21
22
|
} = useFileManifestState();
|
|
23
|
+
|
|
24
|
+
// Prompt user for login before export, if required.
|
|
25
|
+
const { requireLogin } = useLoginGuard();
|
|
26
|
+
|
|
22
27
|
return (
|
|
23
28
|
<Tooltip arrow title={isLoading ? null : downloadStatus.message}>
|
|
24
29
|
<span>
|
|
@@ -26,7 +31,9 @@ export const ExportButton = ({
|
|
|
26
31
|
disabled={
|
|
27
32
|
isLoading || downloadStatus.disabled || downloadStatus.isLoading
|
|
28
33
|
}
|
|
29
|
-
onClick={
|
|
34
|
+
onClick={() => {
|
|
35
|
+
requireLogin(onClick);
|
|
36
|
+
}}
|
|
30
37
|
>
|
|
31
38
|
<span>{children}</span>
|
|
32
39
|
</Button>
|