@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
|
@@ -8,13 +8,15 @@ import { XIcon } from "../CustomIcon/components/XIcon/xIcon";
|
|
|
8
8
|
import { YouTubeIcon } from "../CustomIcon/components/YouTubeIcon/youTubeIcon";
|
|
9
9
|
import { Socials } from "./socials";
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
const meta = {
|
|
12
12
|
argTypes: {
|
|
13
13
|
socials: { control: "object" },
|
|
14
14
|
},
|
|
15
15
|
component: Socials,
|
|
16
16
|
title: "Components/Navigation/SocialLinks",
|
|
17
|
-
}
|
|
17
|
+
} satisfies Meta<typeof Socials>;
|
|
18
|
+
|
|
19
|
+
export default meta;
|
|
18
20
|
|
|
19
21
|
type Story = StoryObj<typeof Socials>;
|
|
20
22
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import logo from "../../../images/logo.svg";
|
|
4
3
|
import { StaticImage } from "./staticImage";
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
const meta = {
|
|
7
6
|
argTypes: {
|
|
8
7
|
alt: { control: "text" },
|
|
9
8
|
height: { control: "number" },
|
|
@@ -12,15 +11,16 @@ export default {
|
|
|
12
11
|
},
|
|
13
12
|
component: StaticImage,
|
|
14
13
|
title: "Components/Common/Image/StaticImage",
|
|
15
|
-
}
|
|
14
|
+
} satisfies Meta<typeof StaticImage>;
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
<StaticImage {...args} />
|
|
19
|
-
);
|
|
16
|
+
export default meta;
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
type Story = StoryObj<typeof meta>;
|
|
19
|
+
|
|
20
|
+
export const StaticImageStory: Story = {
|
|
21
|
+
args: {
|
|
22
|
+
alt: "Data Explorer",
|
|
23
|
+
height: 40,
|
|
24
|
+
src: logo.src,
|
|
25
|
+
},
|
|
26
26
|
};
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { SearchOffIcon } from "../CustomIcon/components/SearchOffIcon/searchOffIcon";
|
|
4
3
|
import { PRIORITY, StatusIcon } from "./statusIcon";
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
const meta = {
|
|
7
6
|
argTypes: {
|
|
8
7
|
StatusIcon: { control: { disable: true } },
|
|
9
8
|
priority: { control: "select", options: Array.from(Object.keys(PRIORITY)) },
|
|
10
9
|
},
|
|
11
10
|
component: StatusIcon,
|
|
12
11
|
title: "Components/Common/Alert/StatusIcon",
|
|
13
|
-
}
|
|
12
|
+
} satisfies Meta<typeof StatusIcon>;
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
<StatusIcon {...args} />
|
|
17
|
-
);
|
|
14
|
+
export default meta;
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
type Story = StoryObj<typeof meta>;
|
|
17
|
+
|
|
18
|
+
export const StatusIconStory: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
StatusIcon: SearchOffIcon,
|
|
21
|
+
priority: PRIORITY.LOW,
|
|
22
|
+
},
|
|
23
23
|
};
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { Tag } from "./tag";
|
|
4
4
|
import { TagWarning } from "./tag.styles";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const meta = {
|
|
7
7
|
argTypes: {
|
|
8
8
|
children: { control: { disabled: true } },
|
|
9
9
|
},
|
|
10
10
|
component: Tag,
|
|
11
11
|
title: "Components/Common/Alert/Tag",
|
|
12
|
-
}
|
|
12
|
+
} satisfies Meta<typeof Tag>;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
<TagWarning {...args}>{args.children}</TagWarning>
|
|
16
|
-
);
|
|
14
|
+
export default meta;
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
type Story = StoryObj<typeof meta>;
|
|
17
|
+
|
|
18
|
+
export const WarningTagStory: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
children: "Please note",
|
|
21
|
+
},
|
|
22
|
+
render: (args) => <TagWarning {...args}>{args.children}</TagWarning>,
|
|
21
23
|
};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React from "react";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { ToggleButtonGroup } from "./toggleButtonGroup";
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
const meta = {
|
|
6
5
|
argTypes: {
|
|
7
6
|
toggleButtons: { table: { disable: true } },
|
|
8
7
|
},
|
|
@@ -11,28 +10,29 @@ export default {
|
|
|
11
10
|
layout: "centered",
|
|
12
11
|
},
|
|
13
12
|
title: "Components/Common/ButtonGroup",
|
|
14
|
-
}
|
|
13
|
+
} satisfies Meta<typeof ToggleButtonGroup>;
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
args
|
|
18
|
-
) => <ToggleButtonGroup {...args} />;
|
|
15
|
+
export default meta;
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
type Story = StoryObj<typeof meta>;
|
|
18
|
+
|
|
19
|
+
export const ToggleButtonGroupStory: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
toggleButtons: [
|
|
22
|
+
{
|
|
23
|
+
label: "Exact Match (243)",
|
|
24
|
+
onToggle: (): void => {
|
|
25
|
+
// onToggle function
|
|
26
|
+
},
|
|
27
|
+
value: "exact-match",
|
|
27
28
|
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
{
|
|
30
|
+
label: "Related (33)",
|
|
31
|
+
onToggle: (): void => {
|
|
32
|
+
// onToggle function
|
|
33
|
+
},
|
|
34
|
+
value: "related-match",
|
|
34
35
|
},
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
],
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
38
|
};
|
package/src/config/entities.ts
CHANGED
|
@@ -379,6 +379,7 @@ export interface SiteConfig {
|
|
|
379
379
|
entities: EntityConfig[];
|
|
380
380
|
explorerTitle: HeroTitle;
|
|
381
381
|
export?: ExportConfig;
|
|
382
|
+
exportsRequireAuth?: boolean;
|
|
382
383
|
exportToTerraUrl?: string; // TODO(cc) revist location; possibly nest inside "export"?
|
|
383
384
|
gitHubUrl?: string;
|
|
384
385
|
layout: {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A callback function to be stored and then executed upon successful login.
|
|
5
|
+
*/
|
|
6
|
+
export type LoginGuardCallback = () => void;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The shape of the LoginGuard context, provides a function to trigger the
|
|
10
|
+
* login process.
|
|
11
|
+
*/
|
|
12
|
+
export interface LoginGuardContextProps {
|
|
13
|
+
requireLogin: (callback?: LoginGuardCallback) => void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The properties for the LoginGuardProvider component.
|
|
18
|
+
*/
|
|
19
|
+
export interface LoginGuardProviderProps {
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext } from "react";
|
|
2
|
+
import { LoginGuardCallback, LoginGuardContextProps } from "./common/types";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* LoginGuardContext provides a way to trigger a login process. Default value is to
|
|
6
|
+
* call the callback immediately, if specified.
|
|
7
|
+
*/
|
|
8
|
+
export const LoginGuardContext = createContext<LoginGuardContextProps>({
|
|
9
|
+
requireLogin: (callback?: LoginGuardCallback) => {
|
|
10
|
+
callback?.();
|
|
11
|
+
},
|
|
12
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useContext } from "react";
|
|
2
|
+
import { LoginGuardContextProps } from "./common/types";
|
|
3
|
+
import { LoginGuardContext } from "./context";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Custom hook to access the LoginGuard context. This hook returns an object
|
|
7
|
+
* containing the "requireLogin" function, which allows triggering the application's
|
|
8
|
+
* login process.
|
|
9
|
+
*
|
|
10
|
+
* @returns The current LoginGuard context value.
|
|
11
|
+
*/
|
|
12
|
+
export function useLoginGuard(): LoginGuardContextProps {
|
|
13
|
+
return useContext<LoginGuardContextProps>(LoginGuardContext);
|
|
14
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { LoginGuardCallback, LoginGuardProviderProps } from "./common/types";
|
|
7
|
+
import { LoginGuardContext } from "./context";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* LoginGuardProvider is responsible for intercepting actions that require user authentication.
|
|
11
|
+
* It provides a "requireLogin" function via context. When a protected action is triggered while the
|
|
12
|
+
* user is unauthenticated, the LoginDialog is displayed. Upon successful authentication, the saved
|
|
13
|
+
* callback is invoked.
|
|
14
|
+
*
|
|
15
|
+
* @param {LoginGuardProviderProps} props - The provider props that include children.
|
|
16
|
+
* @returns The provider component.
|
|
17
|
+
*/
|
|
18
|
+
export function LoginGuardProvider({
|
|
19
|
+
children,
|
|
20
|
+
}: LoginGuardProviderProps): JSX.Element {
|
|
21
|
+
// Dialog open state.
|
|
22
|
+
const [open, setOpen] = useState(false);
|
|
23
|
+
|
|
24
|
+
// Use ref to store the callback without triggering re-render.
|
|
25
|
+
const callbackRef = useRef<LoginGuardCallback | undefined>(undefined);
|
|
26
|
+
|
|
27
|
+
// Determine if authentication is enabled.
|
|
28
|
+
const authConfig = useAuthenticationConfig();
|
|
29
|
+
|
|
30
|
+
// Determine if authentication is required for downloads and exports.
|
|
31
|
+
const {
|
|
32
|
+
config: { exportsRequireAuth },
|
|
33
|
+
} = useConfig();
|
|
34
|
+
|
|
35
|
+
// Get the user's authenticated state.
|
|
36
|
+
const {
|
|
37
|
+
authState: { isAuthenticated },
|
|
38
|
+
} = useAuth();
|
|
39
|
+
|
|
40
|
+
// If the user authenticates, close dialog then fire and clear callback.
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (isAuthenticated) {
|
|
43
|
+
setOpen(false);
|
|
44
|
+
callbackRef.current?.();
|
|
45
|
+
// Clear callback after firing.
|
|
46
|
+
callbackRef.current = undefined;
|
|
47
|
+
}
|
|
48
|
+
}, [isAuthenticated]);
|
|
49
|
+
|
|
50
|
+
// Handler to close the dialog.
|
|
51
|
+
const onClose = useCallback(() => {
|
|
52
|
+
setOpen(false);
|
|
53
|
+
// Clear any stored callback.
|
|
54
|
+
callbackRef.current = undefined;
|
|
55
|
+
}, []);
|
|
56
|
+
|
|
57
|
+
// Block actions that require authentication, or fire callback if already authenticated.
|
|
58
|
+
const requireLogin = useCallback(
|
|
59
|
+
(cb?: LoginGuardCallback) => {
|
|
60
|
+
if (authConfig && exportsRequireAuth && !isAuthenticated) {
|
|
61
|
+
callbackRef.current = cb;
|
|
62
|
+
setOpen(true);
|
|
63
|
+
} else {
|
|
64
|
+
cb?.();
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
[authConfig, exportsRequireAuth, isAuthenticated]
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<LoginGuardContext.Provider value={{ requireLogin }}>
|
|
72
|
+
{children}
|
|
73
|
+
<LoginDialog open={open} onClose={onClose} />
|
|
74
|
+
</LoginGuardContext.Provider>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { TypographyOwnProps } from "@mui/material";
|
|
2
2
|
|
|
3
|
+
export const COLOR: Record<string, TypographyOwnProps["color"]> = {
|
|
4
|
+
INHERIT: "inherit",
|
|
5
|
+
INK_LIGHT: "ink.light",
|
|
6
|
+
INK_MAIN: "ink.main",
|
|
7
|
+
};
|
|
8
|
+
|
|
3
9
|
export const VARIANT: Record<string, TypographyOwnProps["variant"]> = {
|
|
4
10
|
INHERIT: "inherit",
|
|
11
|
+
TEXT_BODY_400: "text-body-400",
|
|
12
|
+
TEXT_BODY_400_2_LINES: "text-body-400-2lines",
|
|
13
|
+
TEXT_HEADING_SMALL: "text-heading-small",
|
|
5
14
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { DataDictionary } from "../../components/DataDictionary/dataDictionary";
|
|
3
|
+
import { BaseComponentProps } from "../../components/types";
|
|
4
|
+
|
|
5
|
+
export const DataDictionaryView = ({
|
|
6
|
+
className,
|
|
7
|
+
}: BaseComponentProps): JSX.Element => {
|
|
8
|
+
return <DataDictionary className={className} />;
|
|
9
|
+
};
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { jest } from "@jest/globals";
|
|
2
|
+
import { act, render, screen } from "@testing-library/react";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { LoginGuardContext } from "../src/providers/loginGuard/context";
|
|
5
|
+
|
|
6
|
+
jest.unstable_mockModule("../src/hooks/useConfig", () => ({
|
|
7
|
+
useConfig: jest.fn(),
|
|
8
|
+
}));
|
|
9
|
+
|
|
10
|
+
jest.unstable_mockModule("../src/providers/authentication/auth/hook", () => ({
|
|
11
|
+
useAuth: jest.fn(),
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.unstable_mockModule(
|
|
15
|
+
"../src/hooks/authentication/config/useAuthenticationConfig",
|
|
16
|
+
() => ({
|
|
17
|
+
useAuthenticationConfig: jest.fn(),
|
|
18
|
+
})
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const TEST_ID_LOGIN_DIALOG = "login-dialog";
|
|
22
|
+
const TEXT_DIALOG_CLOSED = "closed";
|
|
23
|
+
const TEXT_DIALOG_OPEN = "open";
|
|
24
|
+
jest.unstable_mockModule(
|
|
25
|
+
"../src/components/common/LoginDialog/loginDialog",
|
|
26
|
+
() => ({
|
|
27
|
+
LoginDialog: ({ open }: { open: boolean }): JSX.Element => (
|
|
28
|
+
<div data-testid={TEST_ID_LOGIN_DIALOG}>
|
|
29
|
+
{open ? TEXT_DIALOG_OPEN : TEXT_DIALOG_CLOSED}
|
|
30
|
+
</div>
|
|
31
|
+
),
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
const { useConfig } = await import("../src/hooks/useConfig");
|
|
36
|
+
const { useAuth } = await import("../src/providers/authentication/auth/hook");
|
|
37
|
+
const { useAuthenticationConfig } = await import(
|
|
38
|
+
"../src/hooks/authentication/config/useAuthenticationConfig"
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const { LoginGuardProvider } = await import(
|
|
42
|
+
"../src/providers/loginGuard/provider"
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const TEXT_BUTTON_EXPORT = "export";
|
|
46
|
+
|
|
47
|
+
describe("LoginGuardProvider", () => {
|
|
48
|
+
beforeEach(() => {
|
|
49
|
+
// Mock hooks used by login guard.
|
|
50
|
+
(useConfig as jest.Mock).mockReturnValue({
|
|
51
|
+
config: {
|
|
52
|
+
exportsRequireAuth: true,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
(useAuth as jest.Mock).mockReturnValue({
|
|
56
|
+
authState: {
|
|
57
|
+
isAuthenticated: false,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
(useAuthenticationConfig as jest.Mock).mockReturnValue({});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("should render children and login dialog closed", () => {
|
|
64
|
+
render(
|
|
65
|
+
<LoginGuardProvider>
|
|
66
|
+
<div data-testid="child">child component</div>
|
|
67
|
+
</LoginGuardProvider>
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
expect(screen.getByTestId("child")).toBeTruthy();
|
|
71
|
+
expect(screen.getByTestId(TEST_ID_LOGIN_DIALOG).textContent).toBe(
|
|
72
|
+
TEXT_DIALOG_CLOSED
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("calls callback immediately if user is authenticated", () => {
|
|
77
|
+
const callback = jest.fn();
|
|
78
|
+
|
|
79
|
+
// Simulate user authentication.
|
|
80
|
+
(useAuth as jest.Mock).mockReturnValue({
|
|
81
|
+
authState: { isAuthenticated: true },
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
render(
|
|
85
|
+
<LoginGuardProvider>
|
|
86
|
+
<LoginGuardContext.Consumer>
|
|
87
|
+
{({ requireLogin }) => (
|
|
88
|
+
<button onClick={() => requireLogin(callback)}>
|
|
89
|
+
{TEXT_BUTTON_EXPORT}
|
|
90
|
+
</button>
|
|
91
|
+
)}
|
|
92
|
+
</LoginGuardContext.Consumer>
|
|
93
|
+
</LoginGuardProvider>
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
// Click button requiring login.
|
|
97
|
+
act(() => {
|
|
98
|
+
screen.getByText(TEXT_BUTTON_EXPORT).click();
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// User is authenticated; callback should be fired immediately.
|
|
102
|
+
expect(callback).toHaveBeenCalled();
|
|
103
|
+
|
|
104
|
+
// Login dialog should not be open.
|
|
105
|
+
expect(screen.getByTestId(TEST_ID_LOGIN_DIALOG).textContent).toBe(
|
|
106
|
+
TEXT_DIALOG_CLOSED
|
|
107
|
+
);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it("calls callback immediately if exportsRequireAuth is false", () => {
|
|
111
|
+
const callback = jest.fn();
|
|
112
|
+
|
|
113
|
+
// Simulate exportsRequireAuth being false.
|
|
114
|
+
(useConfig as jest.Mock).mockReturnValue({
|
|
115
|
+
config: {
|
|
116
|
+
exportsRequireAuth: false,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
render(
|
|
121
|
+
<LoginGuardProvider>
|
|
122
|
+
<LoginGuardContext.Consumer>
|
|
123
|
+
{({ requireLogin }) => (
|
|
124
|
+
<button onClick={() => requireLogin(callback)}>
|
|
125
|
+
{TEXT_BUTTON_EXPORT}
|
|
126
|
+
</button>
|
|
127
|
+
)}
|
|
128
|
+
</LoginGuardContext.Consumer>
|
|
129
|
+
</LoginGuardProvider>
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
// Click button requiring login.
|
|
133
|
+
act(() => {
|
|
134
|
+
screen.getByText(TEXT_BUTTON_EXPORT).click();
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// exportsRequireAuth is false; callback should be fired immediately.
|
|
138
|
+
expect(callback).toHaveBeenCalled();
|
|
139
|
+
|
|
140
|
+
// Login dialog should not be open.
|
|
141
|
+
expect(screen.getByTestId(TEST_ID_LOGIN_DIALOG).textContent).toBe(
|
|
142
|
+
TEXT_DIALOG_CLOSED
|
|
143
|
+
);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
it("should call callback after user authenticates", async () => {
|
|
147
|
+
const callback = jest.fn();
|
|
148
|
+
|
|
149
|
+
const { rerender } = render(
|
|
150
|
+
<LoginGuardProvider>
|
|
151
|
+
<LoginGuardContext.Consumer>
|
|
152
|
+
{({ requireLogin }) => (
|
|
153
|
+
<button onClick={() => requireLogin(callback)}>
|
|
154
|
+
{TEXT_BUTTON_EXPORT}
|
|
155
|
+
</button>
|
|
156
|
+
)}
|
|
157
|
+
</LoginGuardContext.Consumer>
|
|
158
|
+
</LoginGuardProvider>
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
// Click button requiring login.
|
|
162
|
+
act(() => {
|
|
163
|
+
screen.getByText(TEXT_BUTTON_EXPORT).click();
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// User is not authenticated; callback should not have been called.
|
|
167
|
+
expect(callback).not.toHaveBeenCalled();
|
|
168
|
+
|
|
169
|
+
// User is not authenticated; login dialog should be open.
|
|
170
|
+
expect(screen.getByTestId(TEST_ID_LOGIN_DIALOG).textContent).toBe(
|
|
171
|
+
TEXT_DIALOG_OPEN
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
// Simulate user authentication.
|
|
175
|
+
await act(async () => {
|
|
176
|
+
(useAuth as jest.Mock).mockReturnValue({
|
|
177
|
+
authState: { isAuthenticated: true },
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Rerender to trigger useEffect.
|
|
182
|
+
rerender(
|
|
183
|
+
<LoginGuardProvider>
|
|
184
|
+
<div />
|
|
185
|
+
</LoginGuardProvider>
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
// Callback should be called (in useEffect called on re-render).
|
|
189
|
+
expect(callback).toHaveBeenCalled();
|
|
190
|
+
});
|
|
191
|
+
});
|